非线性结构之二叉树

原创 2015年07月07日 21:57:24

二叉树的建立和遍历

#include<stdio.h>
#include<malloc.h>
#include<string.h>
 
typedef struct tree{

    int data;
    struct tree *leftNode;
    struct tree *rightNode;
}tree;

tree * createTree();
void proTraversal(tree *root);
void InoTraversal(tree *root);
void posTraversal(tree *root);

int main()
{
    tree *root;
    root = createTree();
    printf("先序遍历:\n");
    proTraversal(root);
    printf("中序遍历:\n");
    InoTraversal(root);
    printf("后序遍历:\n");
    posTraversal(root);
    return 0;
}


tree * createTree()
{
    tree *root,*pn1,*pn2,*pn3,*pn4,*pn5,*pn6 = NULL;
    //存储节点
    root=(tree *)malloc(sizeof(tree));
    root->data = 0;
    pn1=(tree *)malloc(sizeof(tree));
    pn1->data = 1;
    pn2=(tree *)malloc(sizeof(tree));
    pn2->data = 2;
    pn3=(tree *)malloc(sizeof(tree));
    pn3->data = 3;
    pn4=(tree *)malloc(sizeof(tree));
    pn4->data = 4;
    pn5=(tree *)malloc(sizeof(tree));
    pn5->data = 5;
    pn6=(tree *)malloc(sizeof(tree));
    pn6->data = 6;
    //存储关系
    root->leftNode = pn1;
    root->rightNode = pn2;
    pn1->leftNode = pn3;
    pn1->rightNode = pn4;
    pn2->leftNode = pn5;
    pn2->rightNode = pn6;
    
    pn3->leftNode = NULL;
    pn3->rightNode = NULL;
    pn4->leftNode = NULL;
    pn4->rightNode = NULL;
    pn5->leftNode = NULL;
    pn5->rightNode = NULL;
    pn6->leftNode = NULL;
    pn6->rightNode = NULL;

    //返回头节点
    return root;
}

void proTraversal(tree *root)
{
    if(root!=NULL)
    {
        printf("%d\n",root->data);
        proTraversal(root->leftNode);
        proTraversal(root->rightNode);
    }
}

void InoTraversal(tree *root)
{
    if(root!=NULL)
    {
        InoTraversal(root->leftNode);
        printf("%d\n",root->data);
        InoTraversal(root->rightNode);
    }
}

void posTraversal(tree *root)
{
    if(root!=NULL)
    {
        posTraversal(root->leftNode);
        posTraversal(root->rightNode);
        printf("%d\n",root->data);
    }
}

二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历

二叉树是一类简单而又重要的树形结构,在数据的排序、查找和遍历方面有着广泛的应用。由于其清晰的结构,简单的逻辑,广泛的应用和大量的指针操作,在面试过程屡见不鲜,快被面试官玩坏了。相关的问题在百行代码内就...
  • K346K346
  • K346K346
  • 2016年03月24日 21:25
  • 4309

【数据结构与算法】二叉树递归与非递归遍历(附完整源码)

二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但...
  • mmc_maodun
  • mmc_maodun
  • 2013年10月24日 08:58
  • 40415

数据结构-树-二叉树遍历完整可执行代码(递归/非递归)

数据结构-树-二叉树遍历完整可执行代码(递归/非递归) mark:有篇博客写的不错,关于非递归算法描述很详细,先记录了。http://www.cnblogs.com/dolphin0520/...
  • hitwhylz
  • hitwhylz
  • 2013年11月06日 12:37
  • 3113

数据结构(二)非线性结构之二叉树

没有天生的信心,只有不断培养的信心。 /** *@author StormMaybin @Date 2016-07-17 */ 上上一篇文章总结了一下线性表,今天就来总结一下数据结构中非线性部分,...
  • StromMaybin
  • StromMaybin
  • 2016年07月17日 22:28
  • 1751

数据结构之二叉树

  • 2015年12月02日 14:20
  • 562KB
  • 下载

数据结构源码之二叉树的二叉链表

  • 2012年07月25日 10:26
  • 92KB
  • 下载

非线性数据结构——二叉树

在计算机科学中,树形结构是一类重要的非线性数据结构,二叉树是一种重要的树形结构。     二叉树是n个数据的有限集,它或为空集(n=0),或含有唯一的称为根的元素,其余元素分成两个互不相交的子集,每个...
  • u012492762
  • u012492762
  • 2013年12月02日 12:27
  • 812

数据结构-非线性-树-二叉树

//概述 //线性结构用于描述数据元素之间的线性关系,实际应用的数据元素之间的关系错综复杂,很难用线性关系描述,这就用到非线性结构, //树它描述客观世界中事务之间的层次关系,一切具有层次关系的问题都...
  • lcg910978041
  • lcg910978041
  • 2016年05月09日 11:44
  • 663

非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树

转载:http://blog.csdn.net/LG1259156776/article/details/47271673 在上一篇数据结构的博文《数据结构(三):非线性逻辑结构-二叉树》中已经...
  • lcg910978041
  • lcg910978041
  • 2017年11月28日 19:11
  • 87

数据结构全攻略--攻破非线性结构的堡垒之树和二叉树(二)

探讨二叉树结构的基本特性,但为什么没有将二叉树有关的存储结构拿出来探讨呢?主要是因为二叉树的存储结构其实和树是差不多的,即使说了用处也不大,尽量减少记忆量。然后加上了些有关二叉树遍历的一些算法,这些算...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013年10月07日 09:30
  • 2393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:非线性结构之二叉树
举报原因:
原因补充:

(最多只允许输入30个字)