zoukankan      html  css  js  c++  java
  • 剑指offre之【二叉树的下一个节点】

    题目:

      二叉树的下一个结点

    链接:

      https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e?tpId=13&tqId=11210&tPage=3&rp=3&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

    题目描述:

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

    思路:

      在当前结点下:

        如果有右节点,则下一个结点一定在当前结点的右子树中,且下一个结点的左子树为空;

        如果没有右节点,则下一个结点一定在当前结点的父辈之中,且下一个节点的左子树一定是该节点的父辈;

    代码:

      

     1 /*
     2 struct TreeLinkNode {
     3     int val;
     4     struct TreeLinkNode *left;
     5     struct TreeLinkNode *right;
     6     struct TreeLinkNode *next;
     7     TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
     8         
     9     }
    10 };
    11 */
    12 class Solution {
    13 public:
    14     TreeLinkNode* GetNext(TreeLinkNode* pNode)
    15     {    
    16         if(pNode == nullptr)
    17             return nullptr;
    18         if(pNode ->right != nullptr){
    19             pNode = pNode->right;
    20             while(pNode->left != nullptr){
    21                 pNode = pNode->left;
    22             }
    23             return pNode;
    24         }
    25         while (pNode->next != nullptr){
    26             if(pNode->next->left  == pNode){
    27                 return pNode->next;
    28             }
    29             pNode = pNode->next;
    30         }
    31         return nullptr;
    32     } 
    33 };
  • 相关阅读:
    Caffe--solver.prototxt配置文件 参数设置及含义
    关于KMP算法理解(快速字符串匹配)
    Lintcode--004(最小子串覆盖)
    Lintcode--003(乱序字符串)
    Lintcode--002(两个字符串是变位词)
    Lintcode--001(比较字符串)
    闭包的应用实例
    JavaScript完整性检查
    null和undefined相等比较
    JavaScript逻辑运算符(操作数运算符)
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6950477.html
Copyright © 2011-2022 走看看