前言
Algorithms Data Structures = Programs
”数据结构 + 算法 = 程序“
by Niklaus Wirth
二叉树
注意:在阅读本文之前需要掌握栈和队列这两种基本的数据结构
二叉树是一种树形结构,其特点是每个节点至多只有两颗子树(即二叉树中不存在度大于2的节点),并且二叉树的子树有左右之分,其次序不能任意颠倒。
基本数据结构
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define dataType char
#define MAX_SIZE 50
#define Element BinaryTree *
#define endl() printf("\n")
typedef struct TreeNode
{
/* data */
dataType val;
struct TreeNode *left; //左子树
struct TreeNode *right; //右子树
} BinaryTree;
typedef struct Stack //栈
{
/* data */
Element data[MAX_SIZE];
int cursor;
} Stack;
typedef struct Queue //队列
{
/* data */
Element data[MAX_SIZE];
int rear;
int front;
} Queue;
基本数据结构算法
void visited(BinaryTree *tree);
Stack initStack();
Element pop(Stack *st);
void push(Stack *st, Element el);
bool IsEmpty(Stack st);
Element peek(Stack st);
Queue initQueue();
Element get(Queue *q);
void put(Queue *q, Element el);