题目
https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
题意
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
题解
中序遍历顺序:左-根-右。
有以下两种情况:
(1) 如果当前节点存在右子树,则返回右子树中的最靠左的节点。
(2)如果不存在右子树,则应该回溯到上一层,如果当前节点是其父节点的左儿子,则应该返回这个父节点,如果不是,一直向上回溯直到找到一个节点是其父节点的左儿子,如果已知找到树根都没有找到,说明已经遍历到最后一个节点了,返回NULL。
1 | struct TreeLinkNode { |