给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
示例 1:
- <strong>输入:</strong>root = [4,2,7,1,3,6,9]
- <strong>输出:</strong>[4,7,2,9,6,3,1]
复制代码 示例 2:
- <strong>输入:</strong>root = [2,1,3]
- <strong>输出:</strong>[2,3,1]
复制代码 示例 3:
- <strong>输入:</strong>root = []
- <strong>输出:</strong>[]
复制代码
提示:
- 树中节点数目范围在 [0, 100] 内
- -100 <= Node.val <= 100
方法一:递归法
- class Solution {
- public TreeNode invertTree(TreeNode root) {
- if (root == null) {
- return null;
- }
-
- // 递归翻转左右子树
- TreeNode left = invertTree(root.left);
- TreeNode right = invertTree(root.right);
-
- // 交换左右子树
- root.left = right;
- root.right = left;
-
- return root;
- }
- }
复制代码 方法二:迭代法(使用栈)
- import java.util.Stack;
- class Solution {
- public TreeNode invertTree(TreeNode root) {
- if (root == null) {
- return null;
- }
-
- Stack<TreeNode> stack = new Stack<>();
- stack.push(root);
-
- while (!stack.isEmpty()) {
- TreeNode node = stack.pop();
-
- // 交换左右子树
- TreeNode temp = node.left;
- node.left = node.right;
- node.right = temp;
-
- // 将左右子树入栈
- if (node.left != null) {
- stack.push(node.left);
- }
- if (node.right != null) {
- stack.push(node.right);
- }
- }
-
- return root;
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |