二叉树
(不是太太太理解)
1、结构体定义
1 2 3 4 5 | typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; }BiTNode; |
2、构造二叉树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | int CreateBTree(BiTNode **tp) //? { //构造方法,或者说构造顺序,从左子树开始构造 int x; printf ( "please inpyut integer:" ); scanf ( "%d" ,&x); if (x<=0) { *tp = NULL; //指针为空,树节点中的某个指针为空 return 0; } *tp = (BiTNode *) malloc ( sizeof (BiTNode)); if (tp == NULL) { return 0; } (*tp)->data = x; CreateBTree(&((*tp)->lchild)); CreateBTree(&((*tp)->rchild)); return 1; } |
3、各种递归遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | void PreOrder(BiTNode *tree) { if (tree == NULL) { return ; } printf ( "%d" ,tree->data); PreOrder(tree->lchild); PreOrder(tree->rchild); } // void MidOrder(BiTNode *tree) { if (tree == NULL) { return ; } MidOrder(tree->lchild); printf ( "%d" ,tree->data); MidOrder(tree->rchild); } // void PostOrder(BiTNode *tree) { if (tree == NULL) { return ; } PostOrder(tree->lchild); PostOrder(tree->rchild); printf ( "%d" ,tree->data); } |
4、置空二叉树
1 2 3 4 5 6 7 8 9 10 11 | //置空二叉树 void BiTreeSetNull(BiTNode *tree) { if (tree == NULL) { return ; } BiTreeSetNull(tree->lchild); BiTreeSetNull(tree->rchild); free (tree); } |
5、主函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int main() { BiTNode *tree = NULL; printf ( "Create binary tree:\n" ); CreateBTree(&tree); printf ( "Pre Order:\n" ); PreOrder(tree); printf ( "\n" ); printf ( "Mid Order:\n" ); MidOrder(tree); printf ( "\n" ); printf ( "Post Order:\n" ); PostOrder(tree); printf ( "\n" ); return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)