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

二叉树的下一个结点

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

解体体会:第一次感受到case通过率一步步增加的感受 最终是你的想法更加全面

/*function TreeLinkNode(x){
    this.val = x;
    this.left = null;
    this.right = null;
    this.next = null;
}*/
function GetNext(pNode)
{
    // write code here
    //左叶子是其父节点
    //中间节点是其右孩子的最左孩子或者其父亲
    //右叶子是null或者第一个左祖先的父亲
    
    if(!pNode.left&&!pNode.right){
        if(!pNode.next){
          return null 
        }
        if(pNode.next.left===pNode){//左叶子
            return pNode.next
        }else if(pNode.next.right===pNode){//右叶子
            let point=pNode
            while(point.next){
                if(point.next.right==point){
                    point=point.next
                }else if(point.next.left===point){
                    return point.next
                }
            }
           if(!point.next){
               return null
           }    
        
    }
    }else {
        if (!pNode.right){ //中间节点如果没有右孩子,就返回其父亲
          return pNode.next
        }
        let riChild=pNode.right   //如果有 则返回其右孩子的最左孩子
        while(riChild.left){
            riChild=riChild.left
        }
        return riChild
    }
    
}
module.exports = {
    GetNext : GetNext
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
榕城小榕树:你是我见过最幸福的牛客男孩
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务