===============================================================================================
二叉树的定义方式:
1.顺序表:
1 2 3 4 | typedef struct SqTree{ char data[maxsize]; bool isNULL; }SqTree; |
2.链表
1 2 3 4 5 | struct node{ int val; struct node *lchild,*rchild; // int Ltag,Rtag; // tag=0,指向孩子,tag=1。指向线索。线索二叉树 }; |
3.或者使用这种方式定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 | int Tree[35][2]; int deal( int i0, int i1, int pR){ if (i0>i1){ return -1; } int i = pos[pre[pR]]; int Llen = i-i0; int root = pR; Tree[root][0] = deal(i0,i-1,pR+1); Tree[root][1] = deal(i+1,i1,pR+Llen+1); return root; } |
4.也可以定义为结构体:
1 2 3 | struct tnode{ int nodeid,lidx,ridx,level; }; |
===============================================================================================
树 这种数据类型在顺序存储、链式存储下的体系:
===================================================================================================
其他:
1. 完全二叉树用数组表示时下标一定要从1开始!!!
2. BST的中序序列是递增的。
3. 二叉树先序遍历需要借助栈,栈的入栈顺序就是先序序列、出栈顺序就是中序序列。
4.树的层次遍历和图的bfs、树和图的dfs类似(MST)
5.并查集是树的应用
6.快速排序类似树的先序遍历、归并排序类似树的后序遍历
7.回溯算法、动态规划的基础在于树的遍历
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具