先序遍历的顺序建立二叉链表&&中序遍历二叉树T的递归算法
程序员文章站
2022-03-09 08:03:12
...
【算法步骤】
- 扫描字符序列,读入字符ch.
- 如果ch是一个“#”字符,则表明该二叉树为空数,即T为NULL;否则执行以下操作。
- 申请一个节点空间T。
- 将ch赋给T->date。
- 递归创建T的左子数。
- 递归创建T的左子数。
创建二叉链表如图所示:
代码如下:
#include <iostream>
using namespace std;
typedef struct BiNode
{
char date; //二叉链表的定义
struct BiNode *lchild, *rchild;
} BiTNode, *BiTree;
//用先序遍历的顺序建立二叉链表
void CreateBiTree(BiTree &T) //&引用
{
//按照先序次序输入二叉树中节点的值(一个字符),创建二叉链表表示的二叉树T;
char ch;
cin >> ch;
if (ch == '#')
T = NULL;
else
{
T = new BiTNode; // 分配空间
T->date = ch; // 生成根节点
CreateBiTree(T->lchild); //递归创建左子数
CreateBiTree(T->rchild); //递归创建右子树
}
}
//中序遍历二叉树T的递归算法 左根右,如果想搞清楚无比要懂得如何递归且根据图来画一画。
void InOrderTraverse(BiTree T)
{
if (T)
{
InOrderTraverse(T->lchild);
cout << T->date;
InOrderTraverse(T->rchild);
}
}
int main()
{
BiTree tree;
cout << "请输入二叉链表的序列: \n";
CreateBiTree(tree);
cout << "遍历结果为:\n";
InOrderTraverse(tree);
cout << "\n希望能点个赞,微笑" << endl;
}
运行结果:
推荐阅读