剑指offer-二叉树的下一个节点
来源:互联网 发布:手机淘宝淘宝客 编辑:程序博客网 时间:2024/06/10 18:18
问题
题目:[剑指offer-二叉树的下一个节点]
思路
先说思路,由于求的是中序遍历二叉树的下一个节点。所以,分清楚集中情形即可。
1. 如果右子树存在,一定是右子树的最左下节点。
2. 如果右子树不存在,那就可能是它的爷爷节点,这时也需要一个判断就是,如果父节点是爷爷节点的左子树,此时,第一个爷爷节点就是中序遍历的下一个节点,注意可能不存在,比如父亲一直都不是爷爷的左孩子。
代码
/*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) return NULL; TreeLinkNode* right = pNode->right; if( right ) return leftbottom( right ); else return firstfather( pNode, pNode->next ); }private: TreeLinkNode* leftbottom(TreeLinkNode* r){ while(r->left){ r = r->left; } return r; } TreeLinkNode* firstfather(TreeLinkNode* child, TreeLinkNode* f){ while(f){ if( child == f->right ){ child = f; f = f->next; }else return f; } return NULL; }};
阅读全文
0 0
- 剑指Offer--二叉树的下一个节点
- 《剑指offer》二叉树的下一个节点
- 剑指offer-二叉树的下一个节点
- 剑指offer--二叉树的下一个节点
- 剑指offer-二叉树的下一个节点
- 【剑指offer】二叉树的下一个节点
- 剑指offer --- 二叉树的下一个节点
- 剑指offer 58 - 二叉树的下一个节点
- 剑指offer系列之五十七:二叉树的下一个节点
- 剑指offer系列之56:二叉树的下一个节点
- 剑指offer(60):二叉树的下一个节点
- 剑指offer——二叉树的下一个节点
- 剑指Offer面试题58:二叉树的下一个节点
- 13.剑指offer-二叉树的下一个节点
- 剑指offer 第八题 二叉树的下一个节点
- 剑指offer——二叉树的下一个节点___
- 【剑指offer】面试题 8:二叉树的下一个节点
- 【剑指offer】面试题8:二叉树的下一个节点
- linux文件权限查看及修改-chmod
- mysql分页优化
- Spring Cloud 网卡选择
- 对于const常量定义在头文件的思考
- js继承详解-值类型、引用类型
- 剑指offer-二叉树的下一个节点
- Servlet
- vagrant up 出现错误:使用vagrant部署开发环境遇到的坑
- DHTML
- CSDN Markdown的使用
- JavaScript-运算符(%)秒转时间
- HDU1002
- 设计模式之迭代器模式
- C语言中atoi()函数实现--字符串转int型整数