C#中一般使用递归方式实现二叉树的遍历。常见的三种二叉树遍历方式是前序遍历、中序遍历和后序遍历。下面就详细介绍C#在实现这三种遍历方式时需要注意的问题和实现方法。
前序遍历
前序遍历是按照根节点、左子树、右子树的顺序遍历二叉树。例如给定二叉树如下:
1
/ \
2 3
前序遍历输出结果为:1 2 3
C#代码实现如下:
public void PreOrder(TreeNode node)
{
if (node == null) return;
Console.Write(node.Value + " ");
PreOrder(node.Left);
PreOrder(node.Right);
}
中序遍历
中序遍历是按照左子树、根节点、右子树的顺序遍历二叉树。例如给定二叉树如下:
1
/ \
2 3
中序遍历输出结果为:2 1 3
C#代码实现如下:
public void InOrder(TreeNode node)
{
if (node == null) return;
InOrder(node.Left);
Console.Write(node.Value + " ");
InOrder(node.Right);
}
后序遍历
后续遍历是按照左子树、右子树、根节点的顺序遍历二叉树。例如给定二叉树如下:
1
/ \
2 3
后序遍历输出结果为:2 3 1
C#代码实现如下:
public void PostOrder(TreeNode node)
{
if (node == null) return;
PostOrder(node.Left);
PostOrder(node.Right);
Console.Write(node.Value + " ");
}
以前序遍历为例,下面给出一个完整的示例代码:
public class TreeNode
{
public int Value { get; set; }
public TreeNode Left { get; set; }
public TreeNode Right { get; set; }
}
public class BinaryTree
{
public TreeNode Root { get; set; }
public void PreOrder(TreeNode node)
{
if (node == null) return;
Console.Write(node.Value + " ");
PreOrder(node.Left);
PreOrder(node.Right);
}
}
class Program
{
static void Main(string[] args)
{
BinaryTree tree = new BinaryTree();
tree.Root = new TreeNode { Value = 1 };
tree.Root.Left = new TreeNode { Value = 2 };
tree.Root.Right = new TreeNode { Value = 3 };
tree.PreOrder(tree.Root);
Console.ReadKey();
}
}
输出结果为:1 2 3。
可以在示例代码中测试中序遍历和后序遍历的结果,并且可以自行创建不同结构的二叉树进行遍历实验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法 - Python技术站