数据结构与算法一一二叉树




二、满二叉树



三、完全二叉树



四、二叉树性质









#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;

typedef struct BiTNode
{
	char data;
	struct BiTNode *lchild, *rchild;

} BiTNode, *BiTree;

// 创建一颗二叉树: T为指向结构体指针的指针	*T为指向结构体指针	**T就表示结构体
void createBiTree(BiTree *T)
{
	char c;

	scanf("%c", &c);
	if (' ' == c)	// 如果输入空格,就表示输入结束
	{
		*T = NULL;

	} else {

		*T = (BiTNode *)malloc(sizeof(BiTNode));
		(*T)->data = c;
		createBiTree(&(*T)->lchild);
		createBiTree(&(*T)->rchild);
	}
}

// 访问二叉树结点的具体操作
void visit(char c, int level)
{
	printf("%c 位于第 %d 层\n", c, level);
}

// 前序遍历
void preOrderTraverse(BiTree T, int level)
{
	if ( T )
	{
		visit(T->data, level);
		preOrderTraverse(T->lchild, level + 1);
		preOrderTraverse(T->rchild, level + 1);
	}
}

// 中序遍历
void inOrderTraverse(BiTree T, int level)
{
	if ( T )
	{
		inOrderTraverse(T->lchild, level + 1);
		visit(T->data, level);
		inOrderTraverse(T->rchild, level + 1);
	}
}

// 后序遍历
void postOrderTraverse(BiTree T, int level)
{
	if ( T )
	{
		postOrderTraverse(T->lchild, level + 1);
		postOrderTraverse(T->rchild, level + 1);
		visit(T->data, level);
	}
}

五、赫夫曼树






六、二分查找树

请看这篇: https://blog.csdn.net/m0_37989980/article/details/80472020


发布了149 篇原创文章 · 获赞 68 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/m0_37989980/article/details/80479608