我正在嘗試使用 C# 中的遞回方法搜索二叉搜索樹。
到目前為止,我能夠使用兩個引數成功執行此方法:
public bool Search(int value, Node start)
{
if(start == null) {
return false;
}
else if(value == start.value) {
return true;
}
else {
if(value < start.value) {
Search(value, start.LeftChild.value);
}
else {
Search(value, start.RightChild.value);
}
}
}
但是我想看看是否有一種方法可以只使用一個引數,例如使用以下方法簽名:
public bool Search(int value){}
我還有以下可用于訪問樹的內容:
public class BinarySearchTree
{
private Node<int> root;
public Node<int> Root { get => root; set => root = value; }
public BinarySearchTree()
{
this.root = null;
}
}
uj5u.com熱心網友回復:
public bool Search(int value)
{
return SearchTree(value, root);
bool SearchTree(int value, Node<int> start)
{
if(start == null)
return false;
else if(value == start.Value)
return true;
else
{
if(value < start.Value)
return SearchTree(value, start.LeftChild);
else
return SearchTree(value, start.RightChild);
}
}
}
uj5u.com熱心網友回復:
如果有辦法只使用一個引數,例如使用以下方法簽名:
當然。使其成為 Node 類中的方法。
public class Node
{
public Node LeftChild, RightChild;
public int value;
public bool Search(int value)
{
if (value == this.value)
{
return true;
}
else
{
if (value < this.value)
{
return this.LeftChild?.Search(value) ?? false;
}
else
{
return this.RightChild?.Search(value) ?? false;
}
}
}
}
然后對于樹稱它為tree.Root.Search(0);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487130.html
上一篇:我怎樣才能有條不紊地把樹弄平?
