欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

先序遍历的顺序建立二叉链表&&中序遍历二叉树T的递归算法

程序员文章站 2022-03-09 08:03:12
...

【算法步骤】

  1. 扫描字符序列,读入字符ch.
  2. 如果ch是一个“#”字符,则表明该二叉树为空数,即T为NULL;否则执行以下操作。
  • 申请一个节点空间T。
  • 将ch赋给T->date。
  • 递归创建T的左子数。
  • 递归创建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;
}

运行结果:
先序遍历的顺序建立二叉链表&&中序遍历二叉树T的递归算法