题解 | #二叉树的下一个结点#

二叉树的下一个结点

http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

这题真的感觉有些吃力,看了各方的题解才勉强能够做,说实话,二叉树的题还是有些晕的, 重回本题,二叉树的中序遍历就是左子树,根节点,右子树。 alt 如图二叉树,5的下一个节点是6,7的下一个节点是5。 所以分为两种情况: 第一种:节点有右子树,那么该节点的下一个节点就是右子树的最左节点 第二种:节点没有右子树,像节点4,节点6,节点7都没有右子树,4和6为父节点的左节点,那么他们的下一节点就是父节点,而7是父节点的右节点,那么就向上找父节点,当为父节点的父节点的左子树时,它的下一个节点就是父节点。

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) {
       TreeLinkNode pNext = null;
        if(pNode==null) return null;
        if(pNode.right!=null){
            TreeLinkNode pRight = pNode.right;
            while(pRight.left!=null){
                pRight = pRight.left;
            }
            pNext = pRight;
        }else{
            while(pNode.next!=null&&pNode.next.left!=pNode){
                pNode = pNode.left;
            }
            pNext = pNode.next;
        }
        return pNext;
    }
}
全部评论

相关推荐

01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务