代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶子之和

110. 平衡二叉树
https://leetcode.cn/problems/balanced-binary-tree/description/

public boolean isBalanced(TreeNode root) {
        int balance = balance(root);
        return balance == -1 ? false : true;
    }
    public int balance(TreeNode node){
        if (node == null) return 0;
        int left = balance(node.left);
        if (left == -1) return -1;
        int right = balance(node.right);
        if (right == -1) return -1;
        return Math.abs(left - right) > 1 ? - 1 : Math.max(left,right) + 1;
    }

总结:需要用到左右孩子的高度去比对,所以后序,左右孩子有一个不是平衡的,就不用比了,要不就比左右孩子的差的绝对值,每次如果不是平衡,返回-1,是平衡,返回当前节点的高度。
257. 二叉树的所有路径
https://leetcode.cn/problems/binary-tree-paths/description/

public List<String> binaryTreePaths(TreeNode root) {
        List<String> list = new ArrayList<>();
        String s = String.valueOf(root.val);
        preorder(root,list,s);
        return list;
    }
    public void preorder(TreeNode node,List<String> list,String s){
        if (node.left == null && node.right == null){
            list.add(s);
            return;
        }
        if (node.left != null){
            StringBuilder stringBuilder = new StringBuilder(s);
            String leftPath = stringBuilder.append("->").append(node.left.val).toString();
            preorder(node.left,list,leftPath);
        }
        if (node.right != null){
            StringBuilder stringBuilder = new StringBuilder(s);
            String rightPath = stringBuilder.append("->").append(node.right.val).toString();
            preorder(node.right,list,rightPath);
        }
    }

总结:前序,慢慢来很轻松
404. 左叶子之和
https://leetcode.cn/problems/sum-of-left-leaves/description/

public int sumOfLeftLeaves(TreeNode root) {
        if (root == null) return 0;
        int leftValue = 0;
        if (root.left != null && root.left.left == null && root.left.right == null){
            leftValue = root.left.val;
        }
        return leftValue + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
    }
posted @   jeasonGo  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示