二叉树的下一个节点
2016-06-14 10:28
309 查看
剑指offer58题
该节点存在右子树,那么下一个节点就是右子树的最左节点
该节点不存在右子树的话
该节点是父节点的左节点,那么下一个节点是父节点
该节点是父节点的右节点,向上查找到一个节点是其父节点的左节点,那么这个节点的父节点就是下一个节点
解题思路
这个题需要考虑的点是该节点存在右子树,那么下一个节点就是右子树的最左节点
该节点不存在右子树的话
该节点是父节点的左节点,那么下一个节点是父节点
该节点是父节点的右节点,向上查找到一个节点是其父节点的左节点,那么这个节点的父节点就是下一个节点
代码
class Solution { public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if(pNode == nullptr) return nullptr; TreeLinkNode* temp = nullptr; if(pNode->right) { temp = pNode->right; while(temp->left) temp = temp->left; } else if(pNode->next) { TreeLinkNode* cur = pNode; TreeLinkNode* parent = pNode->next; while(parent != nullptr && parent->left != cur) { cur = cur->next; parent = parent->next; } temp = parent; } return temp; } };
相关文章推荐
- canvas绘制虚线
- springmvc+sqlserver中的连接sqlserver的spring配置文件
- 判断链表是否有环并求出环的起点
- Window修改git-bash默认路径
- JS回调函数(callback)
- Hibernate注解方法使用总结
- MapReduce的方式进行HBase向HDFS导入和导出
- iOS-查看真机沙盒文件(利用Xocde)+模拟器查看沙盒文件
- NFS /etc/export配置
- 贝赛尔曲线实现圆形进度条
- Java之内存分析和String对象
- 缩回iOS键盘
- 错误
- RecyclerView学习(三)----高仿知乎的侧滑删除
- Python 学习笔记(基础语法)
- 详细解读Jquery各Ajax函数
- 深度学习FPGA实现基础知识20(FPGA小数运算--DSP基础“定点小数运算”)
- Android 组件布局
- 齐桓公与管仲
- iOS YSKit系列