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;
        
        }
  • 相关阅读:
    团队冲刺第五天
    团队冲刺第四天
    学习进度条---第八周
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    学习进度条--第七周
    课堂练习--第7周(两人结对)
    学习进度条--第六周
    第一次 在Java课上的编程
  • 原文地址:https://www.cnblogs.com/yingpu/p/5834036.html
Copyright © 2011-2022 走看看