二叉树的遍历

二叉树的遍历,第1张

目录:
  • 基本 *** 作:
    • 定义结构体:
    • 创建二叉树:
    • 前序遍历:
    • 中序遍历:
    • 后序遍历:
    • 测试:
      • 测试结果:
      • 创建的二叉树图示:
    • 前序遍历图解分析:

基本 *** 作:
void CreatTree(TreeNode **T,char *data,int *index);    //创建二叉树
void PreOrder(TreeNode *T);     //前序遍历结点
void InOrder(TreeNode *T);     //中序遍历结点
void PostOrder(TreeNode *T);     //后序遍历结点
定义结构体:
#include 
#include 

typedef struct TreeNode
{
    char val;		//存储数据
    struct TreeNode *lchild;	//左孩子
    struct TreeNode *rchild;	//右孩子
}TreeNode;
创建二叉树:
void CreatTree(TreeNode **T,char *data,int *index)
{
    char ch;
    ch = data[*index];
    *index += 1;
    if(ch == '#')
    {
        //此时为空结点
        *T = NULL;
    }
    else
    {
        //非空结点
        *T = (TreeNode *)malloc(sizeof(TreeNode));
        (*T)->val = ch;	//存储传入的数据
        //创建左子树
        CreatTree(&((*T)->lchild),data,index);
        //创建右子树
        CreatTree(&((*T)->rchild),data,index);
    }
}
前序遍历:
//前序遍历:根-左-右
//      先访问根结点,
//      再判断是否存在左子树,若存在则递归前序遍历
//      若不存在左子树时则判断是否存在右子树,若存在则递归前序遍历
void PreOrder(TreeNode *T)
{
    if(T == NULL)
        return ;
    
    printf("%c\t",T->val);
    PreOrder(T->lchild);
    PreOrder(T->rchild);
}
中序遍历:
//中序遍历:左-根-右
void InOrder(TreeNode *T)
{
    if(T == NULL)
        return ;

    InOrder(T->lchild);
    printf("%c\t",T->val); 
    InOrder(T->rchild);
}
后序遍历:
//后序遍历:左-右-根
void PostOrder(TreeNode *T)
{
    if(T == NULL)
        return ;
    
    PostOrder(T->lchild);
    PostOrder(T->rchild);
    printf("%c\t",T->val);
}
测试:
void main()
{
    TreeNode *tree;
    int index = 0;	//辅助利用data数组创建二叉树
    char *data = "ABD##E##CF##G##";
    printf("创建二叉树:\n");
    CreatTree(&tree,data,&index);
    printf("先序遍历:\n");
    PreOrder(tree);
    printf("\n");
    printf("中序遍历:\n");
    InOrder(tree);
    printf("\n");
    printf("后序遍历:\n");
    PostOrder(tree);
    printf("\n");

    system("pause");
    return ;
}
测试结果:

创建的二叉树图示:

前序遍历图解分析:


声明:此文章为学习笔记,如有侵权请联系删除。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/673658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存