mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
添加 0110.平衡二叉树.md JavaScript语言版本的迭代解法
This commit is contained in:
@ -604,7 +604,8 @@ func abs(a int)int{
|
||||
}
|
||||
```
|
||||
|
||||
## JavaScript
|
||||
## JavaScript
|
||||
递归法:
|
||||
```javascript
|
||||
var isBalanced = function(root) {
|
||||
//还是用递归三部曲 + 后序遍历 左右中 当前左子树右子树高度相差大于1就返回-1
|
||||
@ -627,6 +628,48 @@ var isBalanced = function(root) {
|
||||
};
|
||||
```
|
||||
|
||||
迭代法:
|
||||
```javascript
|
||||
// 获取当前节点的高度
|
||||
var getHeight = function (curNode) {
|
||||
let queue = [];
|
||||
if (curNode !== null) queue.push(curNode); // 压入当前元素
|
||||
let depth = 0, res = 0;
|
||||
while (queue.length) {
|
||||
let node = queue[queue.length - 1]; // 取出栈顶
|
||||
if (node !== null) {
|
||||
queue.pop();
|
||||
queue.push(node); // 中
|
||||
queue.push(null);
|
||||
depth++;
|
||||
node.right && queue.push(node.right); // 右
|
||||
node.left && queue.push(node.left); // 左
|
||||
} else {
|
||||
queue.pop();
|
||||
node = queue[queue.length - 1];
|
||||
queue.pop();
|
||||
depth--;
|
||||
}
|
||||
res = res > depth ? res : depth;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
var isBalanced = function (root) {
|
||||
if (root === null) return true;
|
||||
let queue = [root];
|
||||
while (queue.length) {
|
||||
let node = queue[queue.length - 1]; // 取出栈顶
|
||||
queue.pop();
|
||||
if (Math.abs(getHeight(node.left) - getHeight(node.right)) > 1) {
|
||||
return false;
|
||||
}
|
||||
node.right && queue.push(node.right);
|
||||
node.left && queue.push(node.left);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
```
|
||||
|
||||
## C
|
||||
递归法:
|
||||
```c
|
||||
|
Reference in New Issue
Block a user