回 帖 发 新 帖 刷新版面

主题:求一个算法程序:二叉树的查找……用C语言

这是俺从一本书上看的,请高手帮忙。谢谢先!

项目内容:
求一颗二叉树上节点的路径,即求出从根结点到指定结点所经过的所有结点的序列。
设计要求:
用C语言编写此算法。首先建立一个采用链式结构存储的二叉树,然后任意输入一个结点信息,要求程序能求出从根结点到此节点之间的路径并输出。
项目提示:
在查找过程中,采用后序遍历二叉树,因为后序遍历式最后访问根结点的。将按照后序遍历查到的从 根结点到指定结点的整个序列存入一个栈中,最后从栈顶依次输出其中的所有结点,即为所求的路径……

回复列表 (共2个回复)

沙发

咋米有人帮俺呢?郁闷!

板凳

如果遍历到某节点,其值与给定值相等,则将该节点压栈;如果是该节点的孩子与给定值相等,仍将该节点压栈,并将该节点的值赋值给给定值,代码入下:

void find_path(AVL_TREE_NODE* t, KEYTYPE *value)
{
    if(t)
    {
        find_path(t->llink, value);
        find_path(t->rlink, value);
        if(t->key == *value || (t->llink && (t->llink)->key == *value)
          || (t->rlink && (t->rlink)->key == *value))
        {
             push_stack(stack,t);
            *value = t->key;
        }
     }
 }

我来回复

您尚未登录,请登录后再回复。点此登录或注册