mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge pull request #1465 from xiaofei-2020/exTree04
添加(0116.填充每个节点的下一个右侧节点指针.md):增加typescript版本
This commit is contained in:
@ -287,6 +287,79 @@ const connect = root => {
|
||||
};
|
||||
```
|
||||
|
||||
## TypeScript
|
||||
|
||||
(注:命名空间‘Node’与typescript中内置类型冲突,这里改成了‘NodePro’)
|
||||
|
||||
> 递归法:
|
||||
|
||||
```typescript
|
||||
class NodePro {
|
||||
val: number
|
||||
left: NodePro | null
|
||||
right: NodePro | null
|
||||
next: NodePro | null
|
||||
constructor(val?: number, left?: NodePro, right?: NodePro, next?: NodePro) {
|
||||
this.val = (val === undefined ? 0 : val)
|
||||
this.left = (left === undefined ? null : left)
|
||||
this.right = (right === undefined ? null : right)
|
||||
this.next = (next === undefined ? null : next)
|
||||
}
|
||||
}
|
||||
|
||||
function connect(root: NodePro | null): NodePro | null {
|
||||
if (root === null) return null;
|
||||
root.next = null;
|
||||
recur(root);
|
||||
return root;
|
||||
};
|
||||
function recur(node: NodePro): void {
|
||||
if (node.left === null || node.right === null) return;
|
||||
node.left.next = node.right;
|
||||
node.right.next = node.next && node.next.left;
|
||||
recur(node.left);
|
||||
recur(node.right);
|
||||
}
|
||||
```
|
||||
|
||||
> 迭代法:
|
||||
|
||||
```typescript
|
||||
class NodePro {
|
||||
val: number
|
||||
left: NodePro | null
|
||||
right: NodePro | null
|
||||
next: NodePro | null
|
||||
constructor(val?: number, left?: NodePro, right?: NodePro, next?: NodePro) {
|
||||
this.val = (val === undefined ? 0 : val)
|
||||
this.left = (left === undefined ? null : left)
|
||||
this.right = (right === undefined ? null : right)
|
||||
this.next = (next === undefined ? null : next)
|
||||
}
|
||||
}
|
||||
|
||||
function connect(root: NodePro | null): NodePro | null {
|
||||
if (root === null) return null;
|
||||
const queue: NodePro[] = [];
|
||||
queue.push(root);
|
||||
while (queue.length > 0) {
|
||||
for (let i = 0, length = queue.length; i < length; i++) {
|
||||
const curNode: NodePro = queue.shift()!;
|
||||
if (i === length - 1) {
|
||||
curNode.next = null;
|
||||
} else {
|
||||
curNode.next = queue[0];
|
||||
}
|
||||
if (curNode.left !== null) queue.push(curNode.left);
|
||||
if (curNode.right !== null) queue.push(curNode.right);
|
||||
}
|
||||
}
|
||||
return root;
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user