在C#中,要从上到下逐行遍历树,可以使用广度优先搜索(BFS)算法。以下是一个示例代码:
using System;
using System.Collections.Generic;
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
{
this.val = val;
this.left = left;
this.right = right;
}
}
public class TreeTraversal
{
public static void LevelOrderTraversal(TreeNode root)
{
if (root == null)
return;
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.Enqueue(root);
while (queue.Count > 0)
{
TreeNode node = queue.Dequeue();
Console.Write(node.val + " ");
if (node.left != null)
queue.Enqueue(node.left);
if (node.right != null)
queue.Enqueue(node.right);
}
}
}
public class Program
{
public static void Main(string[] args)
{
// 构建一个示例树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
// 从上到下逐行遍历树
TreeTraversal.LevelOrderTraversal(root);
}
}
上述代码中,我们定义了一个TreeNode
类来表示树的节点,其中包含一个val
属性表示节点的值,以及left
和right
属性表示左子树和右子树。然后,我们定义了一个TreeTraversal
类,其中的LevelOrderTraversal
方法使用队列实现广度优先搜索算法来逐行遍历树。最后,在Main
方法中构建了一个示例树,并调用LevelOrderTraversal
方法进行遍历。
这种遍历方式适用于需要按层级顺序处理树节点的场景,例如树的层级遍历、查找特定层级的节点等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云