常用数据结构二叉树的建立

二叉树是最重要的数据结构之一,先序建立二叉树的过程如下。

#include<stdio.h>

#include<stdlib.h>

typedef struct BiTNode

{

char data;

struct BiTNode *lchild,*rchild;

}BiTnode,*BiTree;

BiTree Create(BiTree root)//先序建立二叉树

{

char ch;

printf("input data:");

root=(BiTree)malloc(sizeof(BiTnode));

scanf("%c",&ch);

getchar();

if(ch==‘#‘)

root=NULL;

else

{

root->data=ch;

root->lchild=Create(root->lchild);

root->rchild=Create(root->rchild);

}

return root;

}

void PreOrderTra(BiTree root)

{

if(root)

{

printf("%c ",root->data);

PreOrderTra(root->lchild);

PreOrderTra(root->rchild);

}

}

void InOrderTra(BiTree root)

{

if(root)

{

InOrderTra(root->lchild);

printf("%c ",root->data);

InOrderTra(root->rchild);

}

}

void LastOrderTra(BiTree root)

{

if(root)

{

LastOrderTra(root->lchild);

LastOrderTra(root->rchild);

printf("%c ",root->data);

}

}

int main(void)

{

BiTree root=0;

root=Create(root);

printf("先序遍历:");

PreOrderTra(root);

printf("\n");

printf("中序遍历:");

InOrderTra(root);

printf("\n");

printf("后序遍历:");

LastOrderTra(root);

printf("\n");

return 0;

}

时间: 2024-11-01 12:21:13

常用数据结构二叉树的建立的相关文章

[数据结构] 二叉树的建立及其基本操作

如图: 代码: #include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; char ch; typedef struct BinNode { char data; struct BinNode *lchild,*rchild; }BinNode,*BinTree; //二叉树链式存储结构 void CreateBin

数据结构 二叉树的建立、遍历、销毁的递归算法(C语言)

这些是较为简单的二叉树的建立.遍历.销毁的递归算法.假设二叉树都用二叉链作为存储结构,并约定根节点的指针用T表示. 为了简化问题,我们用char类型的字符代替树中的数据,并且用前序遍历的算法,建立二叉树过程如下: 输入一个根节点. 若输入的是“ ”(即空格字符),则表明改结点为空,T设置为NULL: 若输入的不是“ ”(空格字符),则将字符存入到T->data中,并依次递归建立它的左子树T->lchild,和右子树T->rchild; 测试的源代码如下: 1 #include<st

大话数据结构——二叉树的建立于遍历

#include<iostream> #include<assert.h> #include<stdlib.h> #include <stdio.h> #include <cstdlib> using namespace std; #define OK 1 #define TURE 1 #define ERROR 0 #define FALSE 0 typedef char elemtype; elemtype ch; //二叉树的二叉链表结点结

数据结构 二叉树的建立及三种遍历方法

#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; typedef struct Binode{ char data; struct Binode *lchild,*rchild; }Binode,*Bitree; void CreatTREE(Bitree &T) { char ch; scanf("%c&

数据结构二叉树——建立二叉树、中序递归遍历、非递归遍历、层次遍历

数据结构二叉树-- 编写函数实现:建立二叉树.中序递归遍历.借助栈实现中序非递归遍历.借助队列实现层次遍历.求高度.结点数.叶子数及交换左右子树. ("."表示空子树) #include<stdio.h> #include<stdlib.h> //***********二叉树链表节点结构 typedef char DataType; typedef struct Node {  DataType data;  struct Node*LChild;  struc

小朋友学数据结构(3):二叉树的建立和遍历

小朋友学数据结构(3):二叉树的建立和遍历 一.基本概念 BinaryTree.png 二叉树:每个结点的子结点个数不大于2的树,叫做二叉树. 根结点:最顶部的那个结点叫做根结点,根结点是所有子结点的共同祖先.比如上图中的"7"结点就是根结点. 子结点:除了根结点外的结点,都叫子结点. 叶子结点:没有子结点的结点,叫做叶子结点.比如上图中的"1"结点."5"结点和"11"结点. 二叉树的遍历,有三种: (1)前序遍历:先遍历根

Java数据结构-二叉树及其遍历

二叉树的定义:n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互相不相交的.分别称为根结点的左子树和右子树的二叉树组成. 二叉树的特点: 0<=度<=2: 左右子树是有顺序的,不能颠倒: 不论有几棵子树,也要区分它是左子树还是右子树. 二叉树的五种基本形态: 空二叉树: 只有一个根结点: 根结点只有左子树: 根结点只有右子树: 根结点既有左子树又有右子树. 举例3个结点的二叉树的形态有: 下面说一些特殊的二叉树. 斜树:所有的结点都只有左子树的二叉

【转】常用数据结构及复杂度

常用数据结构及复杂度 常用数据结构的时间复杂度 Data Structure Add Find Delete GetByIndex Array (T[]) O(n) O(n) O(n) O(1) Linked list (LinkedList<T>) O(1) O(n) O(n) O(n) Resizable array list (List<T>) O(1) O(n) O(n) O(1) Stack (Stack<T>) O(1) - O(1) - Queue (Qu

常用数据结构及复杂度

常用数据结构的时间复杂度 Data Structure Add Find Delete GetByIndex Array (T[]) O(n) O(n) O(n) O(1) Linked list (LinkedList<T>) O(1) O(n) O(n) O(n) Resizable array list (List<T>) O(1) O(n) O(n) O(1) Stack (Stack<T>) O(1) - O(1) - Queue (Queue<T>