题解 | #二叉树的下一个结点#
二叉树的下一个结点
http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
/**
* struct TreeLinkNode {
* int val;
* struct TreeLinkNode *left;
* struct TreeLinkNode *right;
* struct TreeLinkNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pNode TreeNode类
* @return TreeNode类
*/
struct TreeLinkNode* GetNext(struct TreeLinkNode* pNode ) {
struct TreeLinkNode* node=(struct TreeLinkNode*)malloc(sizeof(struct TreeLinkNode));
if(pNode->right!=NULL){
node=pNode->right;
while(node->left!=NULL){
node=node->left;
}return node;
}else{
node=pNode;
while(node->next!=NULL){
if(node==node->next->left){
return node->next;
}else{node=node->next;}
}return NULL;
}
}
* struct TreeLinkNode {
* int val;
* struct TreeLinkNode *left;
* struct TreeLinkNode *right;
* struct TreeLinkNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pNode TreeNode类
* @return TreeNode类
*/
struct TreeLinkNode* GetNext(struct TreeLinkNode* pNode ) {
struct TreeLinkNode* node=(struct TreeLinkNode*)malloc(sizeof(struct TreeLinkNode));
if(pNode->right!=NULL){
node=pNode->right;
while(node->left!=NULL){
node=node->left;
}return node;
}else{
node=pNode;
while(node->next!=NULL){
if(node==node->next->left){
return node->next;
}else{node=node->next;}
}return NULL;
}
}


