leetcode_655. Print Binary Tree

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);
    }
};

猜你喜欢

转载自www.cnblogs.com/jasonlixuetao/p/10694984.html