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

    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
     
    思路:
    要分几种情况:
    (1)结点有右结点,则其下一个结点为其右结点的最左子节点。
    (2)结点无右结点,且是其父节点的左节点,则其下一个结点为其父节点。
    (3)结点无右结点,其是其父节点的右结点,则其有如下两种情况:

     

    第一种情况需要不断的向上回溯,第二种情况下一个结点就是其父节点。

    代码如下:

    /*
    struct TreeLinkNode {
        int val;
        struct TreeLinkNode *left;
        struct TreeLinkNode *right;
        struct TreeLinkNode *next;
        TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
            
        }
    };
    */
    class Solution {
    public:
        TreeLinkNode* GetNext(TreeLinkNode* pNode)
        {
            TreeLinkNode * rev;
            if(pNode==NULL)
                return NULL;
            if(pNode->right!=NULL)
            {
                rev=pNode->right;
                while(rev->left!=NULL)
                    rev=rev->left;
                return rev;
            }
            else
            {
                if(pNode->next==NULL)
                {
                    return NULL;
                }
                if(pNode->next->left==pNode)
                {
                    return pNode->next;
                }
                rev=pNode;
                while(rev->next!=NULL&&rev==rev->next->right)
                {
                    rev=rev->next;
                }
                return rev->next;
            }
        }
    };
  • 相关阅读:
    网易官方」极客战记(codecombat)攻略-沙漠-跟上时间-keeping-time
    jenkins 通过使用crumbissuer停止job
    获取crumbIssuer
    解决docker容器vim高度宽度显示不正常
    嵌入skype标签
    pip --user参数
    python requests模块和 urllib.request模块
    python字符识别
    bs4解析xml文件,制作xml文件
    jenkins api
  • 原文地址:https://www.cnblogs.com/JsonZhangAA/p/12177260.html
Copyright © 2011-2022 走看看