本文共 1044 字,大约阅读时间需要 3 分钟。
首先我们对二叉树的结构进行设计,以’#'作为结束符,对类型进行重定义。
#define END '#'typedef char ElemType;
二叉链表的结构设计:
typedef struct BtNode//BinaryTreeNode{ struct BtNode* leftchild;//左孩子节点 struct BtNode* rightchild;//右孩子节点 ElemType data;//数据域}BtNode,*BinaryTree;
三叉链表的结构设计:
typedef struct BtNode//BinaryTreeNode{ struct BtNode* leftchild;//左孩子节点 struct BtNode* parent;//双亲指针 struct BtNode* rightchild;//右孩子节点 ElemType data;//数据域}BtNode,*BinaryTree;
二叉树的遍历:
所谓树的遍历,就是按照某种次序遍历树中的节点,要求每个节点访问仅且访问一次。 设访问根节点记作V,遍历根的左子树记作L,遍历根的右子树记作R,则有以下几种遍历方式:下面我们来给出中序遍历的代码:
void InOrder(BtNode* p){ if (p != NULL) { InOrder(p->leftchild); printf("%c ", p->data); InOrder(p->rightchild); }}
前序遍历代码:
void FrontOrder(BtNode* p){ if (p != NULL) { printf("%c ", p->data); FrontOrder(p->leftchild); FrontOrder(p->rightchild); }}
后序遍历代码:
void EndOrder(BtNode* p){ if (p != NULL) { EndOrder(p->leftchild); EndOrder(p->rightchild); printf("%c ", p->data); }}
转载地址:http://cmtuk.baihongyu.com/