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

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


    思路:

    (1)  若该节点存在右子树:则下一个节点为右子树最左子节点(如图节点  B  )  

    (2)  若该节点不存在右子树:这时分两种情况

                2.1   该节点为父节点的左子节点,则下一个节点为其父节点(如图节点     D     
                2.2   该节点为父节点的右子节点,则沿着父节点向上遍历,知道找到一个节点的父节点的左子节点为该节点,则该节点的父节点下一个节点(如图节点 I,沿着父节点一直向上查找找到  B (B  为其父节点的左子节点),则 B 的父节点  A  为下一个节点)

    struct TreeLinkNode { 
        int val; 
        struct TreeLinkNode *left; 
        struct TreeLinkNode *right; 
        struct TreeLinkNode *next; 
        TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) { 
             
        } 
    }; 
        TreeLinkNode* GetNext(TreeLinkNode* pNode)
        {
            if(pNode==NULL)  return NULL;
            if(pNode->right!=NULL)
            {
                pNode =pNode->right;
               while(pNode->left)
               {
                   pNode=pNode->left;
               }
                return pNode;
            }
            while(pNode->next)
            {
                if(pNode->next->left==pNode)  return pNode->next;
                
                pNode=pNode->next;
            }
            return NULL;
            
        }
  • 相关阅读:
    学习笔记:模拟退火
    我的 2020
    高一上文化课期末复习
    IOI 2020-2021 集训队作业
    学习笔记:插头DP
    NOIP2020 游记
    刷题记录
    学习笔记:四边形不等式优化 DP
    操作集合时 报错 java.lang.UnsupportedOperationException
    【编码】接收前端参数时,偶数汉字正常,奇数汉字乱码
  • 原文地址:https://www.cnblogs.com/wft1990/p/7453539.html
Copyright © 2011-2022 走看看