博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offre之【二叉树的下一个节点】
阅读量:5347 次
发布时间:2019-06-15

本文共 1289 字,大约阅读时间需要 4 分钟。

题目:

  二叉树的下一个结点

链接:

  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 };

 

转载于:https://www.cnblogs.com/wangshujing/p/6950477.html

你可能感兴趣的文章
构造 HDOJ 5400 Arithmetic Sequence
查看>>
BestCoder Round #75
查看>>
MythXinWCF通用宿主绿色版V1.1
查看>>
Windows下根据端口号杀死进程
查看>>
使用linux操作系统的公司服务器有哪些品牌
查看>>
Hello ,移动WEB 笔记
查看>>
JS与IE/Firefox兼容性汇总
查看>>
面试概念集锦
查看>>
python学习之深浅拷贝
查看>>
php基础概念
查看>>
内置函数
查看>>
如何快速学习bootstrap
查看>>
项目笔记-SC01
查看>>
.Net基础之3——运算符
查看>>
android中setOnClickListener的那点事
查看>>
查看 android 上wifi 密码
查看>>
406 Queue Reconstruction by Height 根据身高重建队列
查看>>
第4次实验
查看>>
完全卸载Python for ubuntu
查看>>
Spring Cloud Stream消费失败后的处理策略(一):自动重试
查看>>