C#使用迭代的方式实现树的非递归先序遍历代码
时间: 2024-06-08 12:08:01 浏览: 78
在C#中使用迭代的方式实现树的非递归先序遍历的代码如下所示:
```csharp
public void PreorderTraversal(Node root)
{
if (root == null)
{
return;
}
Stack<Node> stack = new Stack<Node>();
stack.Push(root);
while (stack.Count > 0)
{
Node node = stack.Pop();
// 处理当前节点
// [1]
Console.WriteLine(node.value);
// 先将右子节点入栈,再将左子节点入栈
if (node.right != null)
{
stack.Push(node.right);
}
if (node.left != null)
{
stack.Push(node.left);
}
}
}
```
这段代码使用了一个栈来模拟递归过程。首先将根节点入栈,然后循环中弹出栈顶节点并处理,同时将其右子节点和左子节点按照先右后左的顺序入栈。这样可以保证在遍历过程中先处理根节点,然后处理左子树,最后处理右子树,实现了先序遍历的效果。
请注意,在代码中的注释部分处是处理当前节点的语句,你可以根据具体的需求进行相应的操作,比如输出节点的值或者进行其他操作。
这样,我们就可以使用迭代的方式实现树的非递归先序遍历了。
阅读全文