题解 | #二叉树的下一个结点#

二叉树的下一个结点

http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

/* 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; TreeLinkNode *dad=pNode->next; if(dad==NULL) //为根节点的情况,其父节点为NULL { dad=pNode->right;
if(dad==NULL) //只有根节点一个元素的情况 return NULL; while(dad->left!=NULL) //在根节点右边集群中找到最底层的左子树节点 dad=dad->left; return dad; } else{ //不为根节点的情况 if(dad->left==pNode) //pNode为父节点的左节点的情况 { if(pNode->right!=NULL) { dad=pNode->right; while(dad->left!=NULL) dad=dad->left; return dad; } else return pNode->next; } else //pNode为父节点右节点的情况 { if(pNode->right!=NULL) { dad=pNode->right; while(dad->left!=NULL) dad=dad->left; return dad; } else //注意当pNode的右子节点为空时,pNode可能在根节点左边最底层的最右节点上 { TreeLinkNode *son=pNode; dad=pNode->next; while(dad!=NULL) { if(dad->left==son) return dad; son=dad; dad=son->next; } return NULL; } } } } };

全部评论

相关推荐

08-06 15:03
中南大学
真人面试官我唯唯诺诺,AI面试我激情互喷
青春运维少年不会梦到...:好样的,没丢份
点赞 评论 收藏
分享
Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务