二叉树的下一个结点

class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode)
    {

        //第一种情况
        if(pNode==NULL)
            return pNode;
        //第二种情况
        else if(pNode->right!=NULL)
        {
            pNode=pNode->right;//我觉得像这种需要变换值的,最好还是申请一个新的节点
            while(pNode->left!=NULL)
            {
                pNode=pNode->left;//在这里可以看到我们对其直接赋值了,对结构体直接赋值了
            }
            return pNode;
        }
        else 
        {
            while(pNode->next!=NULL)//还需要考虑就只有这一个结点的情况,所以返回了一个NULL
            {
                TreeLinkNode* root=pNode->next;
                if(root->left==pNode)//两个链表结点之间还能比较是否等于??
                    return root;
                pNode=pNode->next;
            }
        }
        return NULL;//可能是最后一个遍历的结点,所以返回NULL
    }
};

总结:本就是大神解法,
1.不同结点之间可以用=赋值==判断
2.这是用的迭代代替的递归

全部评论

相关推荐

大野鸡:其实就是量,但是时间有限,1000题只要不是全中等简单,简单中等困难1-2-1,大概能打打比赛了(前20%),10000题就是下一个灵神
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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