/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<string>> printTree(TreeNode* root) { int i=getTreeHigh(root); //i行 int j=pow(2,i)-1; //j列 vector<vector<string>> res(i,vector<string>(j,"")); //初始化比for循环赋值要快 dfs(res,root,0,0,j); return res; } void dfs(vector<vector<string>>& res,TreeNode* t,int depth,int left,int right){ if(!t)return; int mid=left+right>>1; res[depth][mid]=to_string(t->val); //所需要修改的值的下标类似于二分的中间数 //就是区间的中心点 dfs(res,t->left,depth+1,left,mid); dfs(res,t->right,depth+1,mid,right); } int getTreeHigh(TreeNode* t){ //递归求树的高度 if(!t)return 0; return max(getTreeHigh(t->left),getTreeHigh(t->right))+1; } };
原文:https://www.cnblogs.com/52dxer/p/12539971.html