LeetCode题解之二叉树(二)

152 阅读1分钟

617. 合并二叉树

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { 
        if(t1 == NULL) return t2;
        if(t2 == NULL) return t1; 
        TreeNode* root = new TreeNode(0);
        //以下三个元素就构成了root
        root->val = t1->val + t2->val;
        root->left = mergeTrees(t1->left, t2->left);
        root->right = mergeTrees(t1->right, t2->right);
        return root;
    }
};

144. 二叉树的前序遍历

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> res;
        stack<TreeNode*> stk;
        TreeNode* p = root;
        while(stk.size() || p)
        {
            while(p)
            {
                stk.push(p);
                res.push_back(p->val);
                p = p->left;
            }
            p = stk.top();
            stk.pop();
            p = p->right;
        } 
        return res;
    }
};