mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Merge pull request #1197 from Merry9/master
修改二叉树系列19 从中序与后序遍历序列构造二叉树JS版本变量名 preorder->inorder
This commit is contained in:
@ -790,7 +790,7 @@ func findRootIndex(target int,inorder []int) int{
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var buildTree = function(inorder, postorder) {
|
var buildTree = function(inorder, postorder) {
|
||||||
if (!preorder.length) return null;
|
if (!inorder.length) return null;
|
||||||
const rootVal = postorder.pop(); // 从后序遍历的数组中获取中间节点的值, 即数组最后一个值
|
const rootVal = postorder.pop(); // 从后序遍历的数组中获取中间节点的值, 即数组最后一个值
|
||||||
let rootIndex = inorder.indexOf(rootVal); // 获取中间节点在中序遍历中的下标
|
let rootIndex = inorder.indexOf(rootVal); // 获取中间节点在中序遍历中的下标
|
||||||
const root = new TreeNode(rootVal); // 创建中间节点
|
const root = new TreeNode(rootVal); // 创建中间节点
|
||||||
|
@ -355,6 +355,7 @@ func sortedArrayToBST(nums []int) *TreeNode {
|
|||||||
```
|
```
|
||||||
|
|
||||||
## JavaScript
|
## JavaScript
|
||||||
|
递归
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var sortedArrayToBST = function (nums) {
|
var sortedArrayToBST = function (nums) {
|
||||||
@ -372,7 +373,44 @@ var sortedArrayToBST = function (nums) {
|
|||||||
return buildTree(nums, 0, nums.length - 1);
|
return buildTree(nums, 0, nums.length - 1);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
迭代
|
||||||
|
```JavaScript
|
||||||
|
var sortedArrayToBST = function(nums) {
|
||||||
|
if(nums.length===0){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
let root=new TreeNode(0); //初始根节点
|
||||||
|
let nodeQue=[root]; //放遍历的节点,并初始化
|
||||||
|
let leftQue=[0]; //放左区间的下标,初始化
|
||||||
|
let rightQue=[nums.length-1]; // 放右区间的下标
|
||||||
|
|
||||||
|
while(nodeQue.length){
|
||||||
|
let curNode=nodeQue.pop();
|
||||||
|
let left=leftQue.pop();
|
||||||
|
let right=rightQue.pop();
|
||||||
|
let mid=left+Math.floor((right-left)/2);
|
||||||
|
|
||||||
|
curNode.val=nums[mid]; //将下标为mid的元素给中间节点
|
||||||
|
|
||||||
|
// 处理左区间
|
||||||
|
if(left<=mid-1){
|
||||||
|
curNode.left=new TreeNode(0);
|
||||||
|
nodeQue.push(curNode.left);
|
||||||
|
leftQue.push(left);
|
||||||
|
rightQue.push(mid-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理右区间
|
||||||
|
if(right>=mid+1){
|
||||||
|
curNode.right=new TreeNode(0);
|
||||||
|
nodeQue.push(curNode.right);
|
||||||
|
leftQue.push(mid+1);
|
||||||
|
rightQue.push(right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
};
|
||||||
|
```
|
||||||
## TypeScript
|
## TypeScript
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
|
Reference in New Issue
Block a user