码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的下一个节点

时间:2020-02-12 12:38:18      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:des   节点   utf-8   一个   init   https   code   none   item   

题目描述

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

思路

首先知道中序遍历的规则是:左根右,然后作图

 

技术图片

1.若当前节点有右子树,下一节点为右子树的最左节点
2.若无右节点,则下一节点为第一个为其父节点左孩子的父节点。

代码(参考:

# -*- coding:utf-8 -*-
# class TreeLinkNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#         self.next = None
class Solution:
    def GetNext(self, pNode):
        # write code here
        if pNode == None:
            return
        #若当前节点有右子树,下一节点为右子树的最左节点
        if pNode.right:
            pNode = pNode.right
            while(pNode.left!=None):
                pNode = pNode.left
            return pNode
        #若无右节点,则下一节点为第一个为其父节点左孩子的父节点。
        while(pNode.next!=None):
            if pNode.next.left == pNode:
                return pNode.next
            pNode = pNode.next
        return None

 

二叉树的下一个节点

标签:des   节点   utf-8   一个   init   https   code   none   item   

原文地址:https://www.cnblogs.com/ditingz/p/12298313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!