后继节点

问题:

求一个二叉树中一个节点的后继节点(后继节点是中序遍历后的集合每个元素的下一个元素)

思路:

后继节点一共有两种情况,一种情况是当前节点有右子树,那么当前节点的后继节点一定在它的右子树上,即为右子树的最左边(这里的最左边是指当前结点的右孩子以及之下它的右孩子之下的树结构的最左边),比如下图


image.png

第二种情况是,当前结点没有右子树,那么就依次网上找,找到一种情况是当前节点是它的父亲节点的左孩子的时候,那么这个父亲节点就是我原始节点的后继节点

代码:

public static Node getNextNode(Node node) {
        if (node == null) {
            return node;
        }
        if (node.right != null) {
            return getLeftMost(node.right);
        } else {
            Node parent = node.parent;
            while (parent != null && parent.left != node) {
                node = parent;
                parent = node.parent;
            }
            return parent;
        }
    }

    public static Node getLeftMost(Node node) {
        if (node == null) {
            return node;
        }
        while (node.left != null) {
            node = node.left;
        }
        return node;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,692评论 0 25
  • 原文链接 B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(...
    非典型程序员阅读 1,268评论 0 3
  • 数据结构与算法--从平衡二叉树(AVL)到红黑树 上节学习了二叉查找树。算法的性能取决于树的形状,而树的形状取决于...
    sunhaiyu阅读 7,809评论 4 32
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,771评论 1 31
  • 今天开通简书,打算用于记录我往后的日子。岁月易逝,本唯有记忆应当永存,奈何琐碎般的日复一日,难以全部记住,浑浑噩噩...
    复苏晓明月阅读 181评论 0 0

友情链接更多精彩内容