首页 > 其他 > 详细

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

时间:2019-09-25 16:29:17      阅读:80      评论:0      收藏:0      [点我收藏+]

技术分享图片

/*
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)
{
TreeLinkNode* p=pNode;
if(pNode->right!=NULL)//节点有有孩子
{
p=pNode->right;
while(p->left)
p=p->left;
return p;
}
else {//节点无右孩子
if(pNode->next!=NULL)//有父亲
{
if(pNode->next->right==pNode)//节点是父亲的右孩子时
{
if(pNode->next->next!=NULL&&pNode->next->next->left==pNode->next)//如果父节点是祖父的左孩子
       return pNode->next->next;//返回祖父
else
       return NULL;
}

if(pNode->next->left==pNode)//如果父节点是左孩子
return pNode->next;//返回父节点
}
else{
return NULL;
}
}

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

原文:https://www.cnblogs.com/yuanch2019/p/11585280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!