二叉树(1)- 创建二叉树

有任何问题,欢迎交流!微博@HelloWorld-_-

定义二叉树节点的结构体


typedef struct TreeNode
{
        char value;       //节点值
        TreeNode* lchild; //左子树
        TreeNode* rchild; //右子树
}TreeNode;
```
#创建二叉树
*** 
```
/*
采用递归方式创建二叉树,通过*表示没有左子树或右子树
先创建左子树,再创建右子树
*/
int generate(TreeNode* &t)
{
        char value;
        cin >> value;
        if(value != '*')
        {
                if(t)
                {
                        t->value = value;
                }
                else
                {
                        t = new TreeNode;
                        t->value = value;
                        generate(t->lchild);//创建左子树
                        generate(t->rchild);//创建右子树
                }
        }
        else // value==* 表示NULL
        {
                t = NULL;
        }
        return 0;
}
```
#二叉树示例
***
**输入**     ```  ABDH***E*I**CF*J**GK**L** ```
**生成的二叉树如下图**

![二叉树示例.png](http://upload-images.jianshu.io/upload_images/3333768-48f4c1ef2bc6ceef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```
//访问二叉树节点,将value打印
int visit(TreeNode* pt)
{
        if(pt)
        {
                if(pt->value != '*')
                {
                        cout << pt->value;
                }
        }
        return 0;
}

//二叉树先序遍历算法,在本文中仅用于展示二叉树结果,不解释其原理
int preOrder(TreeNode* t)
{
        if(t)
        {
                visit(t);
                preOrder(t->lchild);
                preOrder(t->rchild);
        }
        return 0;
}

int main()
{
        TreeNode* pt = NULL;
        generate(pt);//生成二叉树
        preOrder(pt);//先序遍历二叉树,用于展示二叉树的效果
        return 0;
}
```
**运行结果**

![运行结果.png](http://upload-images.jianshu.io/upload_images/3333768-eb911ed09c2c4742.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,475评论 1 31
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 6,780评论 5 14
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,294评论 0 25
  • 1 概述 二叉搜索树,顾名思义,其主要目的用于搜索,它是二叉树结构中最基本的一种数据结构,是后续理解B树、B+树、...
    CodingTech阅读 3,140评论 5 35
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,304评论 1 5