关于二叉树的操作的编程!救救小弟弟我吧!

来源:百度知道 编辑:UC知道 时间:2024/05/04 22:44:28
题目是!:己知以二叉链表作为存储结构,试编写按中序遍历并打印二叉树的算法。
然后这是老师给出的程序设计思路:采用一个栈,先将二叉树根结点退栈:若它有左子树.将左子树根结点入栈、直到左于树为空;然后依次退栈并输出结点值;若输出的结点有右子树,将右子树根结点入栈,如此循环退栈退栈,直到栈空为止。

我真的是一点C的东西都不会!求求各位达人了!裸体跪拜了~~~~~

你可以用递归函数来实现这个函数,基本思路是:

1、如果结点地址为空,则返回;
2、调用函数自身输出左子树;
3、输出本结点;
4、调用函数自身输出右子树;

下面的函数按层次打印二叉树
typedef struct Node
{
Node* left;
Node* right;
char data;
};

//递归打印二叉树的各个结点
void print_btree(Node* node, int level)
{
if(node==NULL)return;

print_btree(node->left,level+1);

//缩进level*2个字符
for(int i=0;i<level;i++)printf(" ");
//假设你的二叉树的结点存放的是一个字符
printf("%c\n",node->data);

print_btree(node->right,level+1);
}

//打印二叉树
void print(Node* tree)
{
print_btree(tree,0);
}

调用print函数,打印出的二叉树形状类似于:
----A
--B
C
----X
--D
----E
------F

注:这里用“-”代替“空格”

祝你好运!

这不是C的东西吧,这是<数据结构>.