LeetCode刷题记录.Day32

翻转二叉树

递归法

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root == nullptr) return root;
        swap(root->left, root->right); //
        invertTree(root->left); //
        invertTree(root->right); //
        return root;
    }
};

递归法和遍历二叉树思路类似,中左右 前序遍历法。

迭代法思路理清后补充

迭代法

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if (root == NULL) return root;
        stack<TreeNode*> st;
        st.push(root);
        while(!st.empty()){
            TreeNode* node = st.top(); 
            st.pop();
            swap(node->left, node->right); //
            if(node->right) st.push(node->right); //反转后为右边
            if(node->left) st.push(node->left);//
        }
        return root;
    }
};

前序迭代法

posted @ 2022-12-05 22:47  凱風快晴  阅读(18)  评论(0)    收藏  举报