前言
有点想摆烂了
110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
返回 false 。
思路
递归判断左右子树的高度。不太好想细节
代码
public boolean isBalanced(TreeNode root) {
return getHeight(root) != -1;
}
private int getHeight(TreeNode root) {
if (root == null) {
return 0;
}
int leftHeight = getHeight(root.left);
if (leftHeight == -1) {
return -1;
}
int rightHeight = getHeight(root.right);
if (rightHeight == -1) {
return -1;
}
// 左右子树高度差大于1,return -1表示已经不是平衡树了
if (Math.abs(leftHeight - rightHeight) > 1) {
return -1;
}
return Math.max(leftHeight, rightHeight) + 1;
}
注意
注意-1的作用
257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
思路
这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。
在这道题目中将第一次涉及到回溯,因为我们要把路径记录下来,需要回溯来回退一一个路径在进入另一个路径。
前序遍历以及回溯的过程如图:
代码
public List<String> binaryTreePaths(TreeNode root) {
ArrayList<String> res = new ArrayList<>();
if (root == null) {
return res;
}
List<Integer> paths = new ArrayList<>();
traversal(root,paths, res);
return res;
}
public void traversal(TreeNode root, List<Integer> paths, List<String> res) {
paths.add(root.val);
if (root.left == null && root.right == null) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < paths.size()-1; i++) {
stringBuilder.append(paths.get(i)).append("->");
}
stringBuilder.append(paths.get(paths.size() - 1));
res.add(stringBuilder.toString());
return;
}
if (root.left != null) {
traversal(root.left, paths, res);
paths.remove(paths.size() - 1);
}
if (root.right != null) {
traversal(root.right, paths, res);
paths.remove(paths.size() - 1);
}
}
注意
paths.add(root.val);必须放在前面
404.左叶子之和
计算给定二叉树的所有左叶子之和。
示例:
思路
递归就完事了
代码
public static int count = 0;
public int sumOfLeftLeaves(TreeNode root) {
find(root);
return count;
}
public void find(TreeNode root,) {
if (root == null) {
return;
}
if (root.left != null && root.left.right == null && root.left.right == null) {
count += root.left.val;
}
find(root.left);
find(root.right);
}
注意
呜呜呜,静态变量力扣里好像不刷新,这个应该能过,呜呜呜呜
结束
今天状态不好,笔记没太好好写。哎