CShap BST的遍历 源代码
时间: 2023-10-13 21:10:55 浏览: 87
以下是C#实现的二叉搜索树的遍历代码:
```csharp
using System;
public class Node {
public int value;
public Node left;
public Node right;
public Node(int value) {
this.value = value;
this.left = null;
this.right = null;
}
}
public class BST {
private Node root;
public BST() {
this.root = null;
}
public void Insert(int value) {
Node newNode = new Node(value);
if (this.root == null) {
this.root = newNode;
return;
}
Node currentNode = this.root;
while (true) {
if (value < currentNode.value) {
if (currentNode.left == null) {
currentNode.left = newNode;
return;
}
currentNode = currentNode.left;
}
else {
if (currentNode.right == null) {
currentNode.right = newNode;
return;
}
currentNode = currentNode.right;
}
}
}
public void PreOrderTraversal(Node node) {
if (node != null) {
Console.Write(node.value + " ");
PreOrderTraversal(node.left);
PreOrderTraversal(node.right);
}
}
public void InOrderTraversal(Node node) {
if (node != null) {
InOrderTraversal(node.left);
Console.Write(node.value + " ");
InOrderTraversal(node.right);
}
}
public void PostOrderTraversal(Node node) {
if (node != null) {
PostOrderTraversal(node.left);
PostOrderTraversal(node.right);
Console.Write(node.value + " ");
}
}
public static void Main(string[] args) {
BST tree = new BST();
tree.Insert(5);
tree.Insert(3);
tree.Insert(7);
tree.Insert(1);
tree.Insert(9);
Console.WriteLine("Pre-order traversal:");
tree.PreOrderTraversal(tree.root);
Console.WriteLine();
Console.WriteLine("In-order traversal:");
tree.InOrderTraversal(tree.root);
Console.WriteLine();
Console.WriteLine("Post-order traversal:");
tree.PostOrderTraversal(tree.root);
Console.WriteLine();
}
}
```
在这个例子中,我们定义了一个`Node`类来表示二叉树的节点,以及一个`BST`类来表示二叉搜索树。`Insert`方法用于将一个新节点插入到二叉搜索树中,`PreOrderTraversal`、`InOrderTraversal`和`PostOrderTraversal`方法分别实现了二叉树的前序遍历、中序遍历和后序遍历。最后,我们在`Main`方法中创建了一个二叉搜索树,并分别进行了三种遍历方式的遍历。
阅读全文