剑指offer全集详解python版——二叉树的下一个结点

【剑指offer全集详解python版——二叉树的下一个结点】 题目描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

思路: 1.该节点有右子树,下一个节点是右子树的最左节点
2.没有右子树的话,如果它是左子节点,则下一个节点是父节点
3.既没有右子树,其它本身是右子节点,就一直向上遍历,直到找到一个是它父节点的左子节点的节点
代码:

# -*- 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 not pNode: return pNode if pNode.right: left1=pNode.right while left1.left: left1=left1.left return left1 p=pNode while pNode.next: tmp=pNode.next if tmp.left==pNode: return tmp pNode=tmp

    推荐阅读