• 剑指offer——06二叉树的下一个节点


    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
     
    题目的意思是,在一颗二叉树的中序遍历中,给出其中一个节点,让你找到中序中该节点的下一个节点
     
    题解:
    情况 1:某节点有右子树,下一节点为右子树中的最左子节点
    情况 2:某节点无右子树,且就是他父节点左子节,则下一节点为父节点
    情况 3:某节点无右子树,且为他父节点的右子节点,则向上递归寻找它的父节点,直到根节点或某个父节点是它自身父节点的左子节点
     
     1 class Solution {
     2 public:
     3     TreeLinkNode* GetNext(TreeLinkNode* pNode)
     4     {
     5         if (pNode == nullptr)
     6             return nullptr;
     7         if (pNode->right != nullptr)//有右子树,则为右子树的最左节点
     8         {
     9             pNode = pNode->right;
    10             while (pNode->left != nullptr)
    11                 pNode = pNode->left;
    12             return pNode;
    13         }
    14         else if (pNode->right == nullptr)
    15         {
    16             while (pNode->next!=nullptr && pNode != pNode->next->left)
    17                 pNode = pNode->next;
    18             return pNode->next;
    19         }
    20         return nullptr;
    21     }
    22 };
      
  • 相关阅读:
    转:Mac下搭建svn服务器和XCode配置svn
    坑爹的高德地图API
    Mac下搭建svn服务器和XCode配置svn
    手风琴效果
    模仿淘宝吸顶条(定时器)
    模仿手机发送短信
    上下移动-欢迎拍砖
    中国的数字图书馆
    响应式布局这件小事
    JS学习笔记
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11651322.html
Copyright © 2020-2023  润新知