LeetCode-二叉树的下一个节点
leetcode并没有这道题,是剑指offer的题目,可以在牛客上找到
题目描述
给定二叉树其中的一个结点,请找出其中序遍历顺序的下一个结点并且返回。
注意,树中的结点不仅包含左右子结点,而且包含指向父结点的指针。
思路:
- 找到其右孩子的最左结点
- 否则,从当前结点往上遍历(题目给出了父节点指针),当当前结点是其父节点的左孩子时候,返回其父结点
- 否侧,返回空
代码:
# -*- 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):
if not pNode:
return None
if pNode.right:
pNode = pNode.right
while pNode.left:
pNode = pNode.left
return pNode
else:
while pNode.next != None:
if pNode == pNode.next.left:
return pNode.next
pNode = pNode.next
return None