• 【Offer】[8] 【中序遍历的下一个结点】


    题目描述

      给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。

    思路分析

    1. 链表的结构中 有指向父结点的指针,方法输入为二叉树的头结点
    2. 分为两种情况:
      • 若当前结点有右子树时,它中序遍历的下一个结点为 它的右子树中的最左子结点;
      • 若当前结点没有右子树时:
        • 该结点是它父结点的左子结点,那么它的下一个结点即它的父节点;
        • 该结点是它父结点的右子结点,那么他的下一个结点就需要沿着它的父节点链进行搜寻,如果搜寻到 一个结点是它父结点的左子结点(复现第一种情况),是那么下一个结点即为此结点的父结点。

    Java代码

    public static TreeNodeWithParent GetNext(TreeNodeWithParent tree) {
            return Solution1(tree);
        }
    
        /**
         * 
         * @param tree
         * @return
         */
        private static TreeNodeWithParent Solution1(TreeNodeWithParent tree) {
            if (tree == null) {
                return null;
            }
            TreeNodeWithParent p = tree;
    
            if (p.right != null) {
                p = p.right;
                while (p.left != null) {
                    p = p.left;
                }
                return p;
            }
            while (p.parent != null) {
                if (p == p.parent.left) {
                    return p.parent;
                }
                p = p.parent;
            }
            return null;
        }
    

    代码链接

    剑指Offer代码-Java

  • 相关阅读:
    make_blobs(源码)
    odoo13
    Odoo Community & Enterprise | & 我的一些瞎扯。。
    odoo 应用笔记 01 [草稿]
    PVE 为虚拟机 直通硬盘
    freebsd 断电 单用户模式恢复
    odoo 绿色版
    WSL 手动下载安装
    Command pg_dump not found
    odoo性能优化
  • 原文地址:https://www.cnblogs.com/haoworld/p/offer8-zhong-xu-bian-li-de-xia-yi-ge-jie-dian.html
Copyright © 2020-2023  润新知