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; } };
前序迭代法

浙公网安备 33010602011771号