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

二叉树的下一个结点

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

这也是时间O(n),空间O(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:
    void help(TreeLinkNode* root,TreeLinkNode* pNode,TreeLinkNode* &res,bool &flag){
        //root是当前节点,pNode是题目给出节点,res是结果节点,
        if(root==NULL) return ;
        help(root->left,pNode,res,flag);
        if(flag){
            res=root;
            flag=false;
            return ;
        }
        if(root==pNode) flag=true;
        help(root->right,pNode,res,flag);
    }
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        TreeLinkNode* root=pNode,*res=NULL;
        while(root->next!=NULL) root=root->next;
        bool flag=false,flag1=false;
        help(root,pNode,res,flag);
        return res;
    }
};
全部评论

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务