二叉树的创建(先序遍历)

需求

根据一颗二叉树的先序遍历的结果,创建二叉树

[‘a’,’b’,’d’,’#’,’f’,’#’,’#’,’#’,’c’,’#’,’e’,’#’,’#’]; (根左右)

思路

创建根节点

递归地创建左子树

递归地创建右子树

递归的注意事项:

1.递归的结束条件:叶子节点

2.递归的递推表达式(节点之间的关系):根左右

3.递归的返回值:创建好的树或者子树

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function TreeNode(val){
this.val = val;
this.left = null;
this.right = null;
}
function createTree_preorder(arr){
let root = null;
if(arr[0]!==undefined){
let rootval = arr.shift();
if(rootval!=='#'){
root = new TreeNode(rootval); //创建根节点
root.left = createTree_preorder(arr);
root.right = createTree_preorder(arr);
}
}
return root;
}
let arr = ['a','b','d','#','f','#','#','#','c','#','e','#','#'];
console.log(createTree_preorder(arr));

二叉树的创建(先序遍历)
https://blog-theta-ten.vercel.app/2021/08/21/二叉树的创建-先序遍历/
作者
Chen
发布于
2021年8月21日
许可协议