当前位置: 首页 > wzjs >正文

创建网站首页时通常取文件名为南通网络公司网站

创建网站首页时通常取文件名为,南通网络公司网站,个人建站公司,河源wordpress培训一、树的基本概念 1. 树的结构定义 递归定义: 空树(n0)非空树(n≥1): 唯一根结点m个互不相交的子树(m≥0) 2. 核心术语 术语说明图示示例结点的度结点的子树个数树的度树中所有…

一、树的基本概念

1. 树的结构定义
  • 递归定义
    • 空树(n=0)
    • 非空树(n≥1):
      • 唯一根结点
      • m个互不相交的子树(m≥0)
2. 核心术语
术语说明图示示例
结点的度结点的子树个数
树的度树中所有结点的最大度数二叉树度为2
叶结点度为0的结点树结构末端结点
分支结点度≠0的结点包含子树的结点
树的深度根到叶结点的最大层数(根为1)3层树深度为3

二、二叉树核心特性

1. 二叉树定义
  • 每个结点最多两个子树
  • 子树有明确左右之分(不可互换)
2. 特殊二叉树类型
类型特征示例
斜树所有结点只有左/右子树
满二叉树所有分支结点都有左右子树,叶子在同一层
完全二叉树层序编号与满二叉树对应,最后一层结点左对齐
3. 重要性质
  1. 层节点数:第i层最多2<sup>i-1</sup>个结点(i≥1)
  2. 总节点数:深度k的树最多2<sup>k</sup>-1个结点
  3. 叶节点关系:n<sub>0</sub> = n<sub>2</sub> +1(n<sub>0</sub>:叶结点,n<sub>2</sub>:度为2结点)
  4. 完全二叉树深度:⌊log<sub>2</sub>n⌋+1

三、二叉树存储结构

1. 顺序存储
#define MAX_SIZE 100
typedef struct {int data[MAX_SIZE];  // 按层序存储int size;
} SeqBinaryTree;// 完全二叉树示例
int parent(int i) { return i/2; }
int left(int i) { return 2*i; }
int right(int i) { return 2*i+1; }
2. 链式存储
typedef struct BiTNode {int data;struct BiTNode *lchild, *rchild;
} BiTNode;BiTNode* CreateNode(int val) {BiTNode *new = (BiTNode*)malloc(sizeof(BiTNode));new->data = val;new->lchild = new->rchild = NULL;return new;
}

四、遍历算法实现

五、二叉树结构定义

typedef char DATATYPE;typedef struct BiTNode {DATATYPE data;                   // 结点数据struct BiTNode *lchild;          // 左孩子指针struct BiTNode *rchild;          // 右孩子指针
} BiTNode;

六、核心操作实现

1. 二叉树创建(先序输入)

char dat[] = "ABD##E##CF##G##";  // 示例输入(#表示空结点)
int inx = 0;void CreateTree(BiTNode **root) {char c = dat[inx++];if ('#' == c) {*root = NULL;return;}*root = (BiTNode*)malloc(sizeof(BiTNode));if (NULL == *root) {perror("malloc failed");exit(EXIT_FAILURE);}(*root)->data = c;CreateTree(&((*root)->lchild));  // 递归创建左子树CreateTree(&((*root)->rchild));  // 递归创建右子树
}

输入示例

A         --> 根
├─B       --> 左子树
│ ├─D     --> B的左子树
│ └─E     --> B的右子树
└─C       --> 右子树├─F     --> C的左子树└─G     --> C的右子树

七、遍历算法实现

1. 递归遍历

// 先序遍历
void PreOrderTraverse(BiTNode *root) {if (root) {printf("%c ", root->data);    // 访问根PreOrderTraverse(root->lchild);PreOrderTraverse(root->rchild);}
}// 中序遍历
void InOrderTraverse(BiTNode *root) {if (root) {InOrderTraverse(root->lchild);printf("%c ", root->data);    // 访问根InOrderTraverse(root->rchild);}
}// 后序遍历
void PostOrderTraverse(BiTNode *root) {if (root) {PostOrderTraverse(root->lchild);PostOrderTraverse(root->rchild);printf("%c ", root->data);    // 访问根}
}

遍历结果

先序:A B D E C F G 
中序:D B E A F C G 
后序:D E B F G C A 

 八、内存管理

1. 二叉树销毁(后序释放)

void DestroyBiTree(BiTNode *root) {if (root) {DestroyBiTree(root->lchild);  // 递归释放左子树DestroyBiTree(root->rchild);  // 递归释放右子树free(root);  // 释放当前结点root = NULL;  // 避免野指针}
}

内存释放顺序

D → E → B → F → G → C → A

九、应用扩展接口

1. 计算二叉树深度
int TreeDepth(BiTNode *root) {if (!root) return 0;int left = TreeDepth(root->lchild);int right = TreeDepth(root->rchild);return (left > right ? left : right) + 1;
}
2. 统计结点数量
int CountNodes(BiTNode *root) {if (!root) return 0;return 1 + CountNodes(root->lchild) + CountNodes(root->rchild);
}
2. 二叉搜索树
// 查找操作(递归)
BiTNode* BSTSearch(BiTNode *root, int key) {if(!root || root->data == key) return root;if(key < root->data)return BSTSearch(root->lchild, key);elsereturn BSTSearch(root->rchild, key);
}

十、复杂度对比

操作平均复杂度最坏情况
遍历O(n)O(n)
查找(BST)O(log n)O(n)(退化成链)
插入/删除O(log n)O(n)

文章转载自:

http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://00000000.bhjyh.cn
http://www.dtcms.com/wzjs/613277.html

相关文章:

  • 怎么做二手网站代理哪里可做网站
  • 网站建设公司做ppt吗局域网里建设网站
  • 网站多久备案一次h5常用的编辑平台
  • 制作网站如何赚钱crack wordpress
  • 做文学类网站后期花费汉南公司网站建设
  • 国家优质校建设网站外贸网站建设soho
  • 哪些网站做微课赚钱专业网站设计公司价格
  • 成都 网站建设 公司html在线编辑网站
  • seo站外推广业务外包注册公司最好用老年人
  • 网站虚拟交易技术怎么做网站建设 费用预算
  • 商业网站改版需要多久银川商城网站开发设计
  • 西安有哪些网站设计公司菜单设计制作网站
  • 怎么免费做自己的网站做海报有什么参考的网站
  • 为什么亿唐网不做网站做品牌怎么开网店不用自己发货囤货的
  • 竞价在什么网站上做一级做a视频在线观看网站
  • 邙山郑州网站建设失信被执行人名单查询官网
  • 提高网站性能最新领导班子
  • 深圳微信网站制作做配电箱的专门网站
  • 统一手机网站做网站排行榜
  • 学校网站建设维护投标方案中国网站建设第一品牌
  • iH5做网站学习网页制作的网站
  • 深圳网站建设公司 交通盘县 网站建设
  • 新余网站设计写作教学网站
  • 商务网站建设难不难艺术设计方案
  • 广州网站建设哪家强酒类网站建设方案案
  • 淘宝网站建设哪个类目相册制作app
  • 建站管理过程做官网需要多少钱
  • 网站维护常识定制网站制作费用
  • 设计网站私单价格网站租服务器
  • 网站建设运营执行方案找网络公司建网站的流程