题解 | #二叉树的下一个结点#
二叉树的下一个结点
https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
step1:如果给出的节点有右子节点,则下一个节点就是右子节点的最左节点 step2:如果给出的节点五右子节点且是父级节点的左子节点,则下一节点就是其父节点。如果给出的节点五右子节点且父节点的右子节点,则向上寻找父节点,直到找到该节点是父节点的左子节点,则下一个节点就是该父节点。时O(n),空O(1) # -*- 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): p = pNode if p.right: p = p.right while (p.left): p = p.left return p else: while (p.next): if p.next.left == p: return p.next p = p.next return None