题目:
给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。
数据范围:节点数满足 1 ≤ n ≤ 50 ,节点上的值满足 1 ≤ val ≤ 100
输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点
返回传入的子树根节点的下一个节点,后台会打印输出这个节点
思路:
1、输入检测节点数和节点值范围,中序遍历首个元素是最左节点,末位节点是最右节点;
2、输入值跟常规的不同,输入的是一个树结构,第一个节点是用户输入的子树节点,第二个节点才是实际输入的树;
3、输出的返回值要求也不常规,要求返回输入子节点的下一个节点,并不是值,后台会根据返回的节点打印出节点值,若不存在则返回空;
4、注意需要进行中序遍历,左中右。
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
class Solution:
nodes = []
def GetNext(self, pNode):
root = pNode
while root.next:
root = root.next
self.InOrder(root)
if (
1 <= len(self.nodes) <= 50
and self.nodes[-1].val <= 100
and self.nodes[0].val >= 1
):
for i in range(len(self.nodes) - 1):
cur = self.nodes[i]
if pNode.val == cur.val:
return self.nodes[i + 1]
return None
def InOrder(self, root):
if root == None:
return
self.InOrder(root.left)
self.nodes.append(root)
self.InOrder(root.right)