JZ57:二叉树的下一个结点

题目描述:

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

解法:

二叉树中序遍历的顺序是左-中-右。分两种情况:
(1)如果一个节点存在右子树,则返回该右子树的最左节点;
(2)如果一个节点不存在右子树,一直向上搜索,直到搜索到上一节点的左孩子是当前节点,返回上一节点。

代码:

class Solution:
    def GetNext(self, pNode):
        if not pNode:
            return None
        if pNode.right:
            pNode = pNode.right
            while pNode.left:
                pNode = pNode.left
            return pNode
        else:
            while pNode.next and pNode.next.left != pNode:
                pNode = pNode.next
            return pNode.next

你可能感兴趣的:(JZ57:二叉树的下一个结点)