问题代码如下:
/// <summary>
/// 查找值为value的结点
/// </summary>
/// <param name="root">根结点</param>
/// <param name="value">要查找的结点</param>
/// <returns>找到的结点</returns>
public Node<T> SearchMatter(Node<T> root, T value)
{
Node<T> p = root;
if (p == null)
{
Console.WriteLine("n");
return null;
}
if (p.data.Equals(value))//
{
Console.WriteLine("a");
return p;
}
else if (p.lChild != null)
{
return SearchMatter(p.lChild, value);
}
else if (p.rChild != null)
{
return SearchMatter(p.rChild, value);
}
else
return null;
/* Node<T> t = root;
if (t == null)
return null;
else
{
if (t.data.Equals(value))
return t;
else
{
Node<T> p = SearchMatter(t.lChild, value);
if (p.data.Equals(value))
return p;
else
return SearchMatter(t.rChild, value);
}
}*/
}
上边那个是定义在二叉树类里的一个函数成员,用于查找二叉树中的元素 /// <summary>
/// 先序方式创建二叉树
/// </summary>
/// <param name="p">根节点</param>
static void CreateBiTree(ref Node<string> p)
{
string str = Console.ReadLine();
if (str == "*")
p = null;
else
{
p = new Node<string>(str);
CreateBiTree(ref p.lChild);
CreateBiTree(ref p.rChild);
}
}
这是以先序方式创建二叉树主函数是这样用的:
LinkBiTree<string> lbt = new LinkBiTree<string>();
Console.Write("\n按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号(如123**4**5**)");
CreateBiTree(ref lbt.head);
查找出了问题,比如以123**4**5**创建二叉树,查找4这个结点就找不到,也就是*前的可以找到,后边的找不到,老师也看不出来问题出在哪?恳请大家帮忙看看!
Console.WriteLine("\n请输入要查找的值");
string val;
val= Console.ReadLine();
/*if (lbt.SearchMatter(lbt.head, val) != null)
Console.WriteLine("相应结点已找到");
else
Console.WriteLine("相应结点未找到");*/
Console.WriteLine(lbt.SearchMatter(lbt.head, val));我的QQ1589525158
/// <summary>
/// 查找值为value的结点
/// </summary>
/// <param name="root">根结点</param>
/// <param name="value">要查找的结点</param>
/// <returns>找到的结点</returns>
public Node<T> SearchMatter(Node<T> root, T value)
{
Node<T> p = root;
if (p == null)
{
Console.WriteLine("n");
return null;
}
if (p.data.Equals(value))//
{
Console.WriteLine("a");
return p;
}
else if (p.lChild != null)
{
return SearchMatter(p.lChild, value);
}
else if (p.rChild != null)
{
return SearchMatter(p.rChild, value);
}
else
return null;
/* Node<T> t = root;
if (t == null)
return null;
else
{
if (t.data.Equals(value))
return t;
else
{
Node<T> p = SearchMatter(t.lChild, value);
if (p.data.Equals(value))
return p;
else
return SearchMatter(t.rChild, value);
}
}*/
}
上边那个是定义在二叉树类里的一个函数成员,用于查找二叉树中的元素 /// <summary>
/// 先序方式创建二叉树
/// </summary>
/// <param name="p">根节点</param>
static void CreateBiTree(ref Node<string> p)
{
string str = Console.ReadLine();
if (str == "*")
p = null;
else
{
p = new Node<string>(str);
CreateBiTree(ref p.lChild);
CreateBiTree(ref p.rChild);
}
}
这是以先序方式创建二叉树主函数是这样用的:
LinkBiTree<string> lbt = new LinkBiTree<string>();
Console.Write("\n按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号(如123**4**5**)");
CreateBiTree(ref lbt.head);
查找出了问题,比如以123**4**5**创建二叉树,查找4这个结点就找不到,也就是*前的可以找到,后边的找不到,老师也看不出来问题出在哪?恳请大家帮忙看看!
Console.WriteLine("\n请输入要查找的值");
string val;
val= Console.ReadLine();
/*if (lbt.SearchMatter(lbt.head, val) != null)
Console.WriteLine("相应结点已找到");
else
Console.WriteLine("相应结点未找到");*/
Console.WriteLine(lbt.SearchMatter(lbt.head, val));我的QQ1589525158
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货