655. Print Binary Tree(打印二叉树)

本文介绍了如何使用递归方法解决LeetCode上的655题——打印二叉树。提供了详细的题目描述和解题思路,并给出了题目链接供进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

方法思路

Recursive Solution

public class Solution {
    //Memory Usage: 37.8 MB, less than 5.71%
    //Runtime: 3 ms, faster than 100.00%
    public List<List<String>> printTree(TreeNode root) {
        int height = getHeight(root);
        String[][] res = new String[height][(1 << height) - 1];
        //<< 按位左移运算符。左操作数按位左移右操作数指定的位数
        for(String[] arr:res)
            Arrays.fill(arr,"");
        //将指定的String值分配给指定的String数组的每个元素
        List<List<String>> ans = new ArrayList<>();
        fill(res, root, 0, 0, res[0].length);
        for(String[] arr:res)
            ans.add(Arrays.asList(arr));
        //返回由指定数组支持的固定大小的列表
        return ans;
    }
    public void fill(String[][] res, TreeNode root, int i, int l, int r) {
        if (root == null)
            return;
        res[i][(l + r) / 2] = "" + root.val;
        fill(res, root.left, i + 1, l, (l + r) / 2);
        fill(res, root.right, i + 1, (l + r + 1) / 2, r);
    }
    public int getHeight(TreeNode root) {
        if (root == null)
            return 0;
        return 1 + Math.max(getHeight(root.left), getHeight(root.right));
    }
}

题目链接:

https://leetcode.com/problems/print-binary-tree/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值