Skip to content

Commit 0cfd92f

Browse files
Merge pull request youngyangyang04#1197 from Merry9/master
修改二叉树系列19 从中序与后序遍历序列构造二叉树JS版本变量名 preorder->inorder
2 parents a959a71 + 1b2e01e commit 0cfd92f

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

problems/0106.从中序与后序遍历序列构造二叉树.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ func findRootIndex(target int,inorder []int) int{
790790

791791
```javascript
792792
var buildTree = function(inorder, postorder) {
793-
if (!preorder.length) return null;
793+
if (!inorder.length) return null;
794794
const rootVal = postorder.pop(); // 从后序遍历的数组中获取中间节点的值, 即数组最后一个值
795795
let rootIndex = inorder.indexOf(rootVal); // 获取中间节点在中序遍历中的下标
796796
const root = new TreeNode(rootVal); // 创建中间节点

problems/0108.将有序数组转换为二叉搜索树.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ func sortedArrayToBST(nums []int) *TreeNode {
355355
```
356356

357357
## JavaScript
358+
递归
358359

359360
```javascript
360361
var sortedArrayToBST = function (nums) {
@@ -372,7 +373,44 @@ var sortedArrayToBST = function (nums) {
372373
return buildTree(nums, 0, nums.length - 1);
373374
};
374375
```
375-
376+
迭代
377+
```JavaScript
378+
var sortedArrayToBST = function(nums) {
379+
if(nums.length===0){
380+
return null;
381+
}
382+
let root=new TreeNode(0); //初始根节点
383+
let nodeQue=[root]; //放遍历的节点,并初始化
384+
let leftQue=[0]; //放左区间的下标,初始化
385+
let rightQue=[nums.length-1]; // 放右区间的下标
386+
387+
while(nodeQue.length){
388+
let curNode=nodeQue.pop();
389+
let left=leftQue.pop();
390+
let right=rightQue.pop();
391+
let mid=left+Math.floor((right-left)/2);
392+
393+
curNode.val=nums[mid]; //将下标为mid的元素给中间节点
394+
395+
// 处理左区间
396+
if(left<=mid-1){
397+
curNode.left=new TreeNode(0);
398+
nodeQue.push(curNode.left);
399+
leftQue.push(left);
400+
rightQue.push(mid-1);
401+
}
402+
403+
// 处理右区间
404+
if(right>=mid+1){
405+
curNode.right=new TreeNode(0);
406+
nodeQue.push(curNode.right);
407+
leftQue.push(mid+1);
408+
rightQue.push(right);
409+
}
410+
}
411+
return root;
412+
};
413+
```
376414
## TypeScript
377415

378416
```typescript

0 commit comments

Comments
 (0)