剑指offer-57.二叉树的下一个结点
来源:互联网 发布:明星互动软件 编辑:程序博客网 时间:2024/06/06 09:16
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路://给定节点pNode,要求用中序遍历顺序找出该节点的下一个节点
//分以下几种情况
//1.该节点为尾节点,则其下一个节点为空,return NULL;
//2.该节点有右子树,按照中序遍历,则该节点的下一个节点为右子树最左节点
//3.该节点没有右子树,按照中序遍历,
//分为两种情况,
//3.1该节点为其父节点的左孩子,很显然按照中序遍历,其父节点就是该节点的下一个节点
//3.1该节点为其父节点的右孩子,很显然按照中序遍历,找它的父节点的
/*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) { //为尾节点,那它的下一个节点就是NULL if (pNode == NULL) return NULL; //该节点有右子树,那么为右子树的最左节点 if (pNode->right != NULL) { pNode = pNode->right; while (pNode->left != NULL) { pNode = pNode->left; } return pNode; } //该节点没有右子树,应该有两种情况,1.该节点是父节点的左孩子,按照中序遍历,左中右,那么其父节点就是该节点的下一个节点 //2.该节点是父节点的右孩子,找到其父节点的父节点,直到父节点为其父节点的父节点的左孩子, while (pNode->next != NULL) { if (pNode->next->left == pNode) return pNode->next; else { pNode = pNode->next; } } return NULL; //找到根节点都找不到 }};
0 0
- 剑指offer--二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 《剑指offer》-- 二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- [剑指offer]二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 剑指offer: 二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 【剑指offer】二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer--二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- 【剑指offer】字符流中第一个不重复的字符
- 1009. 说反话 (20) PAT
- A.谍报分析
- 数据结构第五次实验——并查集、树在线评测
- 数据结构与算法分析 c++11 题3.1 由一个链表元素指定另一个链表对应位置的元素输出
- 剑指offer-57.二叉树的下一个结点
- 2016年湖南省省赛A题
- 内核自带按键驱动的添加与测试
- C语言实验题-倒三角形
- LeetCode #476
- python中关于list remove不得不说的秘密
- 继续聊WPF
- hihoCoder 1514 : 偶像的条件(模拟+二分)
- 显示和隐藏(display属性)