剑指offer_二叉树的下一个节点
题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
解题思路
① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点;
② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。
1 /* 2 public class TreeLinkNode { 3 int val; 4 TreeLinkNode left = null; 5 TreeLinkNode right = null; 6 TreeLinkNode next = null; 7 8 TreeLinkNode(int val) { 9 this.val = val; 10 } 11 } 12 */ 13 public class Solution { 14 public TreeLinkNode GetNext(TreeLinkNode pNode) 15 { 16 if(pNode.right!=null){ 17 TreeLinkNode node = pNode.right; 18 while(node.left!=null){ 19 node=node.left; 20 } 21 return node; 22 } 23 else{ 24 25 while(pNode.next!=null){ 26 TreeLinkNode parent = pNode.next; 27 if(parent.left==pNode) return parent; 28 pNode=pNode.next; 29 } 30 31 32 } 33 34 return null; 35 } 36 }

浙公网安备 33010602011771号