CShap 二叉搜索树返回key的树级 源代码
时间: 2023-10-10 10:05:24 浏览: 76
下面是用C#实现的二叉搜索树返回key的树级的源代码:
```
using System;
public class BinarySearchTree
{
private class Node
{
public int key;
public int level;
public Node left, right;
public Node(int key, int level)
{
this.key = key;
this.level = level;
left = right = null;
}
}
private Node root;
public BinarySearchTree()
{
root = null;
}
public int GetLevel(int key)
{
return GetLevel(root, key);
}
private int GetLevel(Node node, int key)
{
if (node == null)
{
return -1;
}
else if (node.key == key)
{
return node.level;
}
else if (node.key > key)
{
return GetLevel(node.left, key);
}
else
{
return GetLevel(node.right, key);
}
}
public void Insert(int key)
{
root = Insert(root, key, 0);
}
private Node Insert(Node node, int key, int level)
{
if (node == null)
{
return new Node(key, level);
}
else if (node.key > key)
{
node.left = Insert(node.left, key, level + 1);
}
else if (node.key < key)
{
node.right = Insert(node.right, key, level + 1);
}
return node;
}
}
public class Program
{
public static void Main(string[] args)
{
BinarySearchTree bst = new BinarySearchTree();
bst.Insert(10);
bst.Insert(6);
bst.Insert(14);
bst.Insert(3);
bst.Insert(8);
bst.Insert(11);
bst.Insert(16);
Console.WriteLine(bst.GetLevel(10)); // output: 0
Console.WriteLine(bst.GetLevel(6)); // output: 1
Console.WriteLine(bst.GetLevel(14)); // output: 1
Console.WriteLine(bst.GetLevel(3)); // output: 2
Console.WriteLine(bst.GetLevel(8)); // output: 2
Console.WriteLine(bst.GetLevel(11)); // output: 2
Console.WriteLine(bst.GetLevel(16)); // output: 2
Console.WriteLine(bst.GetLevel(7)); // output: -1
}
}
```
这个源代码实现了一个二叉搜索树,并提供了一个`GetLevel()`方法来返回指定key的树级。`Insert()`方法用于将节点插入树中。在`Node`类中,除了key之外,还有一个level属性,用于记录节点在树中所处的级别。在`Insert()`方法中,每当向下递归时,level属性都会增加1。在`GetLevel()`方法中,如果找到了指定的key,则返回该节点的level属性值。如果未找到指定的key,则返回-1。在`Main()`方法中,我们创建了一个二叉搜索树,插入了一些节点,并使用`GetLevel()`方法来检索它们的树级。
阅读全文