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
posted @ 2022-03-07 09:42  小Aer  阅读(30)  评论(0编辑  收藏  举报  来源