首先是二叉树的结构部分:
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct BiTreeNode{
ElemType m_chValue;
struct BiTreeNode *m_pLeft;
struct BiTreeNode *m_pRight;
} BiTNode, *BiTree;
接下来创建一棵一颗二叉树:
void CreateBiTree(BiTree *pRoot)
{
ElemType chVal;
scanf("%c",&chVal);
if(' ' == chVal){ //以空格代表子节点为空
*pRoot = NULL;
}
else{
*pRoot = (BiTree)malloc(sizeof(BiTNode));
(*pRoot)->m_chValue = chVal;
CreateBiTree(&(*pRoot)->m_pLeft);
CreateBiTree(&(*pRoot)->m_pRight);
}
}
二叉树的遍历及输出:
void VisitBiTree(BiTree pTemp)
{
printf("%c ",pTemp->m_chValue);
}
void PreOrderTraverse(BiTree pRoot)
{
if(pRoot){
VisitBiTree(pRoot);
PreOrderTraverse(pRoot->m_pLeft);
PreOrderTraverse(pRoot->m_pRight);
}
}
主程序:
int main(int argc, char* argv[])
{
BiTree pRoot = NULL;
CreateBiTree(&pRoot);
PreOrderTraverse(pRoot);
printf("\n");
return 0;
}
接下来输入测试数据,默认以前序遍历格式输出,空格代表无子节点。