zoukankan      html  css  js  c++  java
  • 二叉树的下一个节点

    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
    思路:此题包含三步:
    1. 如果此节点有右子树,下一个节点为右子节点的最左边的节点。
    2.如果此节点没有右子树,并且如果此节点是其父节点的左子节点,则下一个节点为父节点。
    3.如果此节点没有右子树,并且如果此节点是其父节点的右子节点,则一直向上找,直到找到第一个是其父节点左节点的节点,下一个节点就为此节点。
    public TreeLinkNode GetNext(TreeLinkNode pNode)
        {
            if(pNode == null) return null;
            TreeLinkNode pNext = null;
            if(pNode.right!=null){
                TreeLinkNode temp = pNode.right;
                while(temp.left!=null){
                    temp = temp.left;
                }
                pNext = temp;
            }else{
                TreeLinkNode pParent = pNode.next;
                TreeLinkNode current = pNode;
                while(pParent!=null && pNode == pParent.right){
                    pNode = pParent;
                    pParent = pParent.next;
                }
                pNext = pParent;
            }
            return pNext;
        
        }
  • 相关阅读:
    es6作用域
    es6函数的扩展
    input输入框ios上光标与placeholder、value不能对齐居中
    移动端input常用样式
    webpack安装遇到的坑
    错误类型
    滚动超出一定高度后,导航栏吸顶
    表单change()事件
    第二周学习进度
    第一周学习进度
  • 原文地址:https://www.cnblogs.com/yingpu/p/5834036.html
Copyright © 2011-2022 走看看