题目:
题解:
思路: 我们发现输出的数组的行数就是树的高度,列数就是树的高度的幂次方-1.
- 求出树的高度
- 利用二分法将节点值插入。
代码:
var printTree = function (root) {
if (root === null) {
return [];
}
let n = treeTop(root);
let col = Math.pow(2, n) - 1;
var res = [];
for (let i = 0; i < n; i++) {
let resSub = []
for (let j = 0; j < col; j++) {
resSub.push('')
}
res.push(resSub)
}
getRow(res, root, 0, 0, col)
function getRow(res, root, row, left, right) {
if (root != null) {
let mid = parseInt((left + right) / 2);
res[row][mid] = (root.val).toString()
getRow(res, root.left, row + 1, left, mid)
getRow(res, root.right, row + 1, mid + 1, right)
}
}
function treeTop(root) {
if (root === null) {
return 0
} else {
return 1 + Math.max(treeTop(root.left), treeTop(root.right))
}
}
return res;
};
注:(这里手动标红)
(ps:第二周,第三天)