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 };
  • 相关阅读:
    搜索表头的例子-jqueryEasyUi
    Class^=,Class*= ,Class$=含义(转)
    js中slice方法(转)
    java中File的delete和deleteOnExit区别(转)
    BeanUtils.populate的方法的作用
    java NIO编程(转)
    java socket 之UDP编程
    彻底理解ThreadLocal(转)
    @RequestBody, @ResponseBody 注解详解(转)
    Spring MVC之@RequestMapping 详解
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6950477.html
Copyright © 2011-2022 走看看