题目链接:点击打开链接
题目大意:略
解题思路:略
相关企业
- 字节跳动
- 谷歌(Google)
- 亚马逊(Amazon)
- 优步(Uber)
- 微软(Microsoft)
- 苹果(Apple)
AC 代码
- Java
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ // 解决方案(1) class Solution { public TreeNode invertTree(TreeNode root) { dfs(root); return root; } private void dfs(TreeNode node) { if (null == node) { return; } dfs(node.left); dfs(node.right); TreeNode t = node.left; node.left = node.right; node.right = t; } } // 解决方案(2) class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) return null; Stack<TreeNode> stack = new Stack<>() {{ add(root); }}; while(!stack.isEmpty()) { TreeNode node = stack.pop(); if(node.left != null) stack.add(node.left); if(node.right != null) stack.add(node.right); TreeNode tmp = node.left; node.left = node.right; node.right = tmp; } return root; } } // 解决方案(3) class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) return null; TreeNode tmp = root.left; root.left = mirrorTree(root.right); root.right = mirrorTree(tmp); return root; } }
- C++
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ // 解决方案(1) class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root == nullptr) return nullptr; TreeNode* tmp = root->left; root->left = mirrorTree(root->right); root->right = mirrorTree(tmp); return root; } }; // 解决方案(2) class Solution { public: TreeNode* invertTree(TreeNode* root) { if(root == nullptr) return nullptr; stack<TreeNode*> stack; stack.push(root); while (!stack.empty()) { TreeNode* node = stack.top(); stack.pop(); if (node->left != nullptr) stack.push(node->left); if (node->right != nullptr) stack.push(node->right); TreeNode* tmp = node->left; node->left = node->right; node->right = tmp; } return root; } };