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

【算法步骤】

  1. 扫描字符序列,读入字符ch.
  2. 如果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;
}

运行结果:
在这里插入图片描述

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页