题解 | #二叉树的下一个结点#
二叉树的下一个结点
https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
import java.util.*; /* public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; } } */ public class Solution { public TreeLinkNode GetNext(TreeLinkNode pNode) { //若有右子树,则直接返回右子树下最左边的节点 if(pNode.right!=null){ pNode=pNode.right; while(pNode.left!=null){ pNode=pNode.left; } return pNode; } //若没有右子树 //且是父亲的左孩子,则直接返回父亲节点 if(pNode.next!=null&&pNode.next.left==pNode){ return pNode.next; } //若没有右子树 //且是父亲的右孩子,则一直向上找到上级是上上级的左孩子,返回上上级 if(pNode.next!=null){ pNode=pNode.next; //要是是右孩子还得往上找 while(pNode.next!=null&&pNode.next.right==pNode){ pNode=pNode.next; } return pNode.next; } return null; } }