您的位置:首页 > 文旅 > 美景 > 哪个网址可以看免费的_医院网络销售要做什么_百度一下打开网页_搜索引擎yandex入口

哪个网址可以看免费的_医院网络销售要做什么_百度一下打开网页_搜索引擎yandex入口

2025/3/19 8:00:21 来源:https://blog.csdn.net/a15670247200/article/details/146328532  浏览:    关键词:哪个网址可以看免费的_医院网络销售要做什么_百度一下打开网页_搜索引擎yandex入口
哪个网址可以看免费的_医院网络销售要做什么_百度一下打开网页_搜索引擎yandex入口

题目:翻转二叉树

注意与对称二叉树区分 

题解:

解法一:递归

这道题比较简单,所以有许多思路,我先展示个人认为最容易理解的递归

1.先处理业务,再完成向下递归的操作

class Solution {public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}TreeNode tmp = root.left; // 交换左右儿子root.left = root.right;root.right = tmp;invertTree(root.left); // 翻转左子树invertTree(root.right); // 翻转右子树return root;}
}

2.使用临时变量存储递归后的节点的左右

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;}
}

解法二:栈

这里借用Krahets的代码进行讲解

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;}
}

图解:

root出栈 root.left,root.right入栈

进行出栈-交换-入栈

以此类推

 一次出栈两个并交换再入栈,直到为空...

那么以上就是全部题解了,欢迎大家补充更多解题思路,如有问题也欢迎大家指正!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com