mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-05-05 12:23:27 +08:00
update 0116.填充每个节点的下一个右侧节点指针.md 增加C#迭代和递归实现
This commit is contained in:
@@ -358,7 +358,84 @@ function connect(root: NodePro | null): NodePro | null {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
//递归
|
||||||
|
public class Solution {
|
||||||
|
public Node Connect(Node root) {
|
||||||
|
if (root == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConnectNodes(root.left, root.right);
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConnectNodes(Node node1, Node node2) {
|
||||||
|
if (node1 == null || node2 == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将左子节点的 next 指向右子节点
|
||||||
|
node1.next = node2;
|
||||||
|
|
||||||
|
// 递归连接当前节点的左右子节点
|
||||||
|
ConnectNodes(node1.left, node1.right);
|
||||||
|
ConnectNodes(node2.left, node2.right);
|
||||||
|
|
||||||
|
// 连接跨越父节点的两个子树
|
||||||
|
ConnectNodes(node1.right, node2.left);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 迭代
|
||||||
|
public class Solution
|
||||||
|
{
|
||||||
|
public Node Connect(Node root)
|
||||||
|
{
|
||||||
|
Queue<Node> que = new Queue<Node>();
|
||||||
|
|
||||||
|
if (root != null)
|
||||||
|
{
|
||||||
|
que.Enqueue(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (que.Count > 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
var queSize = que.Count;
|
||||||
|
for (int i = 0; i < queSize; i++)
|
||||||
|
{
|
||||||
|
var cur = que.Dequeue();
|
||||||
|
|
||||||
|
// 当这个节点不是这一层的最后的节点
|
||||||
|
if (i != queSize - 1)
|
||||||
|
{
|
||||||
|
// 当前节点指向下一个节点
|
||||||
|
cur.next = que.Peek();
|
||||||
|
}
|
||||||
|
// 否则指向空
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cur.next = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cur.left != null)
|
||||||
|
{
|
||||||
|
que.Enqueue(cur.left);
|
||||||
|
}
|
||||||
|
if (cur.right != null)
|
||||||
|
{
|
||||||
|
que.Enqueue(cur.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
|
|||||||
@@ -623,3 +623,4 @@ public void Traversal(TreeNode cur, IList<int> res)
|
|||||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user