File tree 2 files changed +47
-2
lines changed
2 files changed +47
-2
lines changed Original file line number Diff line number Diff line change @@ -604,7 +604,8 @@ func abs(a int)int{
604
604
}
605
605
```
606
606
607
- ## JavaScript
607
+ ## JavaScript
608
+ 递归法:
608
609
``` javascript
609
610
var isBalanced = function (root ) {
610
611
// 还是用递归三部曲 + 后序遍历 左右中 当前左子树右子树高度相差大于1就返回-1
@@ -627,6 +628,48 @@ var isBalanced = function(root) {
627
628
};
628
629
```
629
630
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
+
630
673
## TypeScript
631
674
632
675
``` typescript
Original file line number Diff line number Diff line change @@ -224,12 +224,14 @@ var getIntersectionNode = function(headA, headB) {
224
224
lenA = getListLen (headA),
225
225
lenB = getListLen (headB);
226
226
if (lenA < lenB) {
227
+ // 下面交换变量注意加 “分号” ,两个数组交换变量在同一个作用域下时
228
+ // 如果不加分号,下面两条代码等同于一条代码: [curA, curB] = [lenB, lenA]
227
229
[curA, curB] = [curB, curA];
228
230
[lenA, lenB] = [lenB, lenA];
229
231
}
230
232
let i = lenA - lenB;
231
233
while (i-- > 0 ) {
232
- curA = curA .next
234
+ curA = curA .next ;
233
235
}
234
236
while (curA && curA !== curB) {
235
237
curA = curA .next ;
You can’t perform that action at this time.
0 commit comments