前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树的下一个结点

二叉树的下一个结点

作者头像
名字是乱打的
发布2022-05-13 09:28:16
1930
发布2022-05-13 09:28:16
举报
文章被收录于专栏:软件工程

题目描述

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

此题分几种情况

设结点为node 1.如果node为空,则返回null 2.如果node有右子树,则该结点下一结点是右子树的最左结点 3.如果node没有右子树,那么向上查找直到根结点,如果存在当前结点是父结点的左孩子,那么这个结点就是node的父结点,如果一直到根都没有,那么说明这个结点是树的最右结点,返回null即可

代码

代码语言:javascript
复制
 public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        if (pNode==null){//如果结点为空
            return null;
        }
         //节点的中序后继 :右子树不为空时,其右子树中最左下方的节点
        if(pNode.right != null ){
            pNode = pNode.right;
            while(pNode.left != null){
                pNode = pNode.left;
            }
            return pNode;
        }
        TreeLinkNode node=pNode;
        while (node.next!=null){
            //若节点是其父节点的左孩子,则其后继就是该节点
            if (node.next.left==node){
                return node.next;
            }
            //若节点是其父节点的右孩子,则继续向上找,如果到根了也可以停止
            node=node.next;
        }
         
        return null;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 此题分几种情况
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档