剑指offer:二叉树的下一个结点
来源:互联网 发布:trine3 mac 编辑:程序博客网 时间:2024/04/29 23:33
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
/*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) { if (pNode==NULL) return NULL; if(pNode->right!=NULL){//当有右子节点的情况,返回右子树最底下的左子节点(实际上对右子树又中序遍历) pNode=pNode->right; while(pNode->left!=NULL) pNode=pNode->left; return pNode; } //当没有右子节点时,(1)根节点,返回NULL;(2)不是根节点 if(pNode->next!=NULL){//当前结点不是根节点,而且没有右子节点(1)当前结点是父节点的右子树,(2)当前结点是父节点的左子树,返回父节点 while(pNode->next!=NULL && pNode->next->left!=pNode)//(1)当前结点是父结点的右子树,则令当前结点为父结点,然后再返回祖父结点 pNode=pNode->next; return pNode->next; } return NULL;};
阅读全文
0 0
- 剑指offer--二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 《剑指offer》-- 二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- [剑指offer]二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 剑指offer: 二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 【剑指offer】二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer--二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- Java中instanceof的用法
- java中判断两个字符串是否相等的问题
- 笔记
- ios-绘制文字和图片
- 2016中国合伙大会回顾之大咖云集陈九霖、郑桂兰精彩演讲引爆全场
- 剑指offer:二叉树的下一个结点
- 欢迎使用CSDN-markdown编辑器
- C语言基本类型、指针
- C++ const 用法实例
- MySQL中select * for update锁表的范围
- JAVA并发编程--锁的分类
- 字典树专题
- 旁听环保部原副部长张力军受贿案有感
- arduino RTOS