leetcode_655. Print Binary Tree

本文提供了一个解决LeetCode上打印整棵二叉树问题的C++代码实现。通过计算二叉树的高度和宽度,使用深度优先搜索算法,将二叉树的节点值按层级打印出来,形成一个矩阵形式的输出。

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

打印整棵二叉树

 

class Solution
{
public:

    int getTreeHeight(TreeNode* root)
    {
        return root==NULL?0:max(getTreeHeight(root->left), getTreeHeight(root->right))+1;
    }

    vector<vector<string>> printTree(TreeNode* root)
    {
        int height = getTreeHeight(root);
        vector<vector<string>> res(height, vector<string>((int)pow(2, height)-1,""));
        dfs(root, 0 , 0, pow(2, height)-1, res);
        return res;
    }

    void dfs(TreeNode* root, int layer, int l, int r, vector<vector<string>>& res)
    {
        if(root == NULL)
            return;
        int mid = (l+r)/2;
        stringstream ss;
        string value;
        ss<<root->val;
        ss>>value;
        res[layer][mid] = value;
        dfs(root->left, layer+1, l, mid-1, res);
        dfs(root->right, layer+1, mid+1, r, res);
    }
};

 

转载于:https://www.cnblogs.com/jasonlixuetao/p/10694984.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值