Skip to content

Commit 5775f12

Browse files
Merge pull request youngyangyang04#1075 from jobinben/master
添加 面试题02.07.链表相交.md JavaScript语言解法的注释
2 parents de3fa62 + b013f3d commit 5775f12

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

problems/0110.平衡二叉树.md

+44-1
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,8 @@ func abs(a int)int{
604604
}
605605
```
606606

607-
## JavaScript
607+
## JavaScript
608+
递归法:
608609
```javascript
609610
var isBalanced = function(root) {
610611
//还是用递归三部曲 + 后序遍历 左右中 当前左子树右子树高度相差大于1就返回-1
@@ -627,6 +628,48 @@ var isBalanced = function(root) {
627628
};
628629
```
629630

631+
迭代法:
632+
```javascript
633+
// 获取当前节点的高度
634+
var getHeight = function (curNode) {
635+
let queue = [];
636+
if (curNode !== null) queue.push(curNode); // 压入当前元素
637+
let depth = 0, res = 0;
638+
while (queue.length) {
639+
let node = queue[queue.length - 1]; // 取出栈顶
640+
if (node !== null) {
641+
queue.pop();
642+
queue.push(node); //
643+
queue.push(null);
644+
depth++;
645+
node.right && queue.push(node.right); //
646+
node.left && queue.push(node.left); //
647+
} else {
648+
queue.pop();
649+
node = queue[queue.length - 1];
650+
queue.pop();
651+
depth--;
652+
}
653+
res = res > depth ? res : depth;
654+
}
655+
return res;
656+
}
657+
var isBalanced = function (root) {
658+
if (root === null) return true;
659+
let queue = [root];
660+
while (queue.length) {
661+
let node = queue[queue.length - 1]; // 取出栈顶
662+
queue.pop();
663+
if (Math.abs(getHeight(node.left) - getHeight(node.right)) > 1) {
664+
return false;
665+
}
666+
node.right && queue.push(node.right);
667+
node.left && queue.push(node.left);
668+
}
669+
return true;
670+
};
671+
```
672+
630673
## TypeScript
631674

632675
```typescript

problems/面试题02.07.链表相交.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,14 @@ var getIntersectionNode = function(headA, headB) {
224224
lenA = getListLen(headA),
225225
lenB = getListLen(headB);
226226
if(lenA < lenB) {
227+
// 下面交换变量注意加 “分号” ,两个数组交换变量在同一个作用域下时
228+
// 如果不加分号,下面两条代码等同于一条代码: [curA, curB] = [lenB, lenA]
227229
[curA, curB] = [curB, curA];
228230
[lenA, lenB] = [lenB, lenA];
229231
}
230232
let i = lenA - lenB;
231233
while(i-- > 0) {
232-
curA = curA.next
234+
curA = curA.next;
233235
}
234236
while(curA && curA !== curB) {
235237
curA = curA.next;

0 commit comments

Comments
 (0)