伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

《剑指offer》第七天:二叉树的下一个结点

来源:本站原创 浏览:44次 时间:2023-07-20
❝某个办公室有个程序员猝死了。后来来了一个姑娘坐在猝死的程序员的位置,没人告诉她之前发生的事。有一天姑娘让男朋友远程帮忙改代码,自己去吃饭了。之后部门经理恰巧路过,看到电脑在自己写代码,第二天就辞职了。❞
二叉树的下一个结点
题目描述

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

解法

对于结点 pNode:

  • 如果它有右子树,则「右子树的最左结点」就是它的下一个结点;
  • 如果它没有右子树,判断它与父结点 pNode.next 的位置情况:
    • 如果它是父结点的左孩子,那么父结点 pNode.next 就是它的下一个结点;
    • 如果它是父结点的右孩子,一直向上寻找,直到找到某个结点,它是它父结点的左孩子,那么该父结点就是 pNode 的下一个结点。
/*public class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;    TreeLinkNode(int val) {        this.val = val;    }}*/public class Solution {    /**     * 获取中序遍历结点的下一个结点     * @param pNode 某个结点     * @return pNode的下一个结点     */    public TreeLinkNode GetNext(TreeLinkNode pNode) {        if (pNode == null) {            return null;        }        if (pNode.right != null) {            TreeLinkNode t = pNode.right;            while (t.left != null) {                t = t.left;            }            return t;        }        // 须保证 pNode.next 不为空,否则会出现 NPE        if (pNode.next != null && pNode.next.left == pNode) {            return pNode.next;        }        while (pNode.next != null) {            if (pNode.next.left == pNode) {                return pNode.next;            }            pNode = pNode.next;        }        return null;    }}
测试用例
  1. 普通二叉树(完全二叉树;不完全二叉树);
  2. 特殊二叉树(所有结点都没有左/右子结点;只有一个结点的二叉树;二叉树的根结点为空);
  3. 不同位置的结点的下一个结点(下一个结点为当前结点的右子结点、右子树的最左子结点、父结点、跨层的父结点等;当前结点没有下一个结点)。
    我把我写的所有题解整理成了一本电子书放在了 github 上,三天内冲击到 github 排行榜榜首!近 5w 人下载阅读!要获取的话,直接进入下方链接就可以了(记得给我点个 star):

https://github.com/geekxh/hello-algorithm

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net