leetcode 算法题897 (简单236) 递增顺序查找树
- 题目介绍
给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。
- 示例
输入:[5,3,6,2,4,null,8,1,null,null,null,7,9]
5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9
输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9
- 提示
给定树中的结点数介于 1 和 100 之间。
每个结点都有一个从 0 到 1000 范围内的唯一整数值。
- 解法一
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var increasingBST = function(root) {
if(!root) {
return null;
}
let temp = [];
buildArray(root, temp);
let r = t = new TreeNode(temp[0]), i = 1;
while(i < temp.length) {
t.right = new TreeNode(temp[i++]);
t = t.right;
}
return r;
};
const buildArray = (node, temp) => {
if(node.left){
buildArray(node.left, temp);
}
temp.push(node.val);
if(node.right) {
buildArray(node.right, temp);
}
}
执行用时 : 168 ms, 在所有 JavaScript 提交中击败了93.02%的用户
内存消耗 : 43.4 MB, 在所有 JavaScript 提交中击败了8.00%的用户