@@ -313,65 +313,49 @@ func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
313
313
}
314
314
```
315
315
316
-
317
- JavaScript版本
318
- > 递归
319
-
316
+ JavaScript版本:
317
+ 1 . 使用递归的方法
320
318
``` javascript
321
- /**
322
- * Definition for a binary tree node.
323
- * function TreeNode(val) {
324
- * this.val = val;
325
- * this.left = this.right = null;
326
- * }
327
- */
328
-
329
- /**
330
- * @param {TreeNode} root
331
- * @param {TreeNode} p
332
- * @param {TreeNode} q
333
- * @return {TreeNode}
334
- */
335
319
var lowestCommonAncestor = function (root , p , q ) {
336
- if (root .val > p .val && root .val > q .val )
337
- return lowestCommonAncestor (root .left , p , q);
338
- else if (root .val < p .val && root .val < q .val )
339
- return lowestCommonAncestor (root .right , p , q);
320
+ // 使用递归的方法
321
+ // 1. 使用给定的递归函数lowestCommonAncestor
322
+ // 2. 确定递归终止条件
323
+ if (root === null ) {
324
+ return root;
325
+ }
326
+ if (root .val > p .val && root .val > q .val ) {
327
+ // 向左子树查询
328
+ let left = lowestCommonAncestor (root .left ,p,q);
329
+ return left !== null && left;
330
+ }
331
+ if (root .val < p .val && root .val < q .val ) {
332
+ // 向右子树查询
333
+ let right = lowestCommonAncestor (root .right ,p,q);
334
+ return right !== null && right;
335
+ }
340
336
return root;
341
337
};
342
338
```
343
-
344
- > 迭代
345
-
339
+ 2 . 使用迭代的方法
346
340
``` javascript
347
- /**
348
- * Definition for a binary tree node.
349
- * function TreeNode(val) {
350
- * this.val = val;
351
- * this.left = this.right = null;
352
- * }
353
- */
354
-
355
- /**
356
- * @param {TreeNode} root
357
- * @param {TreeNode} p
358
- * @param {TreeNode} q
359
- * @return {TreeNode}
360
- */
361
341
var lowestCommonAncestor = function (root , p , q ) {
362
- while (1 ) {
363
- if (root .val > p .val && root .val > q .val )
342
+ // 使用迭代的方法
343
+ while (root) {
344
+ if (root .val > p .val && root .val > q .val ) {
364
345
root = root .left ;
365
- else if (root .val < p .val && root .val < q .val )
346
+ } else if (root .val < p .val && root .val < q .val ) {
366
347
root = root .right ;
367
- else
368
- break ;
348
+ }else {
349
+ return root;
350
+ }
351
+
369
352
}
370
- return root ;
353
+ return null ;
371
354
};
372
355
```
373
356
374
357
358
+
375
359
-----------------------
376
360
* 作者微信:[ 程序员Carl] ( https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw )
377
361
* B站视频:[ 代码随想录] ( https://space.bilibili.com/525438321 )
0 commit comments