leetcode二叉树—226. 翻转二叉树
2021-07-09 本文已影响0人
小胖学编程
image.png
1. 总结
二叉树的操作均是在遍历的基础上进行的。
五分钟玩转面试考点-数据结构-二叉树的遍历(人之路径,根之输出)
image.png选择一个合适合适的遍历方式:后序遍历!
后序遍历完成时,可以拿到左右子树的引用,以及root节点引用,可以快速完成左右子树的翻转。
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;
}
}
class Solution {
/**
* 1. 后续遍历
*
* 解答成功:
* 执行耗时:0 ms,击败了100.00% 的Java用户
* 内存消耗:35.8 MB,击败了67.97% 的Java用户
*/
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
//获取两个节点
TreeNode leftNode = invertTree(root.left);
TreeNode rightNode = invertTree(root.right);
//反转逻辑
root.left = rightNode;
root.right = leftNode;
return root;
}
}