题目描述[原题链接][https://www.acwing.com/problem/content/description/31/]
给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。
注意:
- 如果给定的节点是中序遍历序列的最后一个,则返回空节点;
- 二叉树一定不为空,且给定的节点一定不是空节点;
样例
1 | 假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于2的节点。 |
算法描述
分两种情况讨论
- 当
p.right!=null
,一直找有子树的左子树,直到左子树的左子树为空,返回当前结点; - 当
p.right==null
,需要找到该节点的父节点,如果p==p.father.right
,那么当前结点的后继就是p.father.father
;
C++代码
1 | /** |
Java代码
1 | /** |