Skip to content

Commit 3f2a179

Browse files
author
YuChengKai
committed
添加注释
1 parent 6f8965c commit 3f2a179

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

DataStruct/dataStruct-zh.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,13 @@ _back(node) {
361361
breadthTraversal() {
362362
if (!this.root) return null
363363
let q = new Queue()
364+
// 将根节点入队
364365
q.enQueue(this.root)
366+
// 循环判断队列是否为空,为空
367+
// 代表树遍历完毕
365368
while (!q.isEmpty()) {
369+
// 将队首出队,判断是否有左右子树
370+
// 有的话,就先左后右入队
366371
let n = q.deQueue()
367372
console.log(n.value)
368373
if (n.left) q.enQueue(n.left)
@@ -390,3 +395,25 @@ _getMax(node) {
390395
}
391396
```
392397

398+
**向上取整和向下取整**,这两个操作是相反的,所以代码也是类似的,这里只介绍如何向下取整。既然是向下取整,那么根据二分搜索树的特性,值一定在根节点的左侧。只需要一直遍历左子树直到当前节点的值不再大于等于需要的值,然后判断节点是否还拥有右子树。如果有的话,继续上面的递归判断。
399+
400+
```js
401+
floor(v) {
402+
if (!this.root) return null
403+
let node = this._floor(this.root, v)
404+
return node ? node.value : null
405+
}
406+
_floor(node, v) {
407+
if (!node) return null
408+
if (node.value === v) return v
409+
// 如果当前节点值还比需要的值大,就继续递归
410+
if (node.value > v) {
411+
return this._floor(node.left, v)
412+
}
413+
// 判断当前节点是否拥有右子树
414+
let right = this._floor(node.right, v)
415+
if (right) return right
416+
return node
417+
}
418+
```
419+

0 commit comments

Comments
 (0)