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

网站编辑如何做查找关键词的工具叫什么

网站编辑如何做,查找关键词的工具叫什么,广州新闻发布会疫情,微信里借钱的小程序树 ​ 树是 n(n≥0)个结点的有限集。当 n 0时,称为空树。在任意一颗非空树中应满足: (1)有且仅有一个特定的称为根的结点。 (2)当 n > 1时,其余结点可分为 m&…

​ 树是 n(n≥0)个结点的有限集。当 n = 0时,称为空树。在任意一颗非空树中应满足:

(1)有且仅有一个特定的称为根的结点。

(2)当 n > 1时,其余结点可分为 m(m > 0)个互不相交的有限集T1, T2, …, Tm,其中每个集合本身又是一棵树,并且称为根的子树。

​ 树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:

(1)树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。

(2)树中所有结点可以有零个或多个后继。
请添加图片描述

二叉树

​ 二叉树是另一种树形结构,其特点是每个结点至多只有两颗字数(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。

​ 与树相似,二叉树也以递归的形式定义,二叉树是 n(n ≥ 0)个结点的有限集合:

(1)或者为空二叉树,即 n = 0。

(2)或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树分别是一颗二叉树。

满二叉树:

如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树 。

1
2
3
4
5
6
7

完全二叉树:

深度为k,有n个节点的二叉树当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的节点一一对应时,称为完全二叉树。

1
2
3
4
5
6

普通二叉树:

1
2
3
4
5
6
7
8
9
10
A
B
D
C

二叉查找树:

二叉查找树又称二叉排序树或者二叉搜索树。

1
2
3
4
5
6
7
8
9
10
A
B
D
C

特点:

  • 每个节点上最多有两个子节点。
  • 左子树上所有节点的值都小于根节点的值。
  • 右子树上所有节点的值都大于根节点的值。

目的:

  • 提高检索数据的性能。

二茶树的链式存储

typedef char BiElemType;
typedef struct BiTNode {BiElemType data;struct BiTNode *lchild;struct BiTNode *rchild;
}

请添加图片描述

二叉树建树

#include <stdio.h>
#include <stdlib.h>typedef char BiElemType;
// 树结点
typedef struct BiTNode {// 数据BiElemType data;// 左子树struct BiTNode *lchild;// 右子树struct BiTNode *rchild;} BiTNode, *BiTree;// 用于构建辅助链队结点
typedef struct LinkNode {// 用于存储树的某一个结点的地址BiTree p_tree;struct LinkNode *next;
} LinkNode;int main() {// 创建树根BiTree Tree = NULL;// 用来指向新申请的树结点BiTree tree_new_node;// 队列头 队列尾 队列新结点 当前树的父结点(要插入结点的位置)LinkNode *q_head = NULL, *q_tail = NULL, *q_new_node = NULL, *q_cur = NULL;char c;while (scanf("%c", &c)) {if ('\n' == c) {break;}// 申请树结点// calloc 申请空间并对空间进行初始化为0tree_new_node = (BiTree) calloc(1, sizeof(BiTNode));tree_new_node->data = c;// 队列新结点q_new_node = (LinkNode *) calloc(1, sizeof(LinkNode));// 新结点p_tree存储新的树结点地址q_new_node->p_tree = tree_new_node;q_new_node->next = NULL;// 如果树为空if (NULL == Tree) {// 树根Tree = tree_new_node;// 队首q_head = q_new_node;// 队尾q_tail = q_new_node;// 当前树的父结点(要插入结点的位置)q_cur = q_new_node;// 结束本次循环continue;} else {// 新结点放入队列中q_tail->next = q_new_node;// 新结点成为新尾部q_tail = q_new_node;}// 当前父结点插入左子树if (NULL == q_cur->p_tree->lchild) {q_cur->p_tree->lchild = tree_new_node;} else if (NULL == q_cur->p_tree->rchild) {q_cur->p_tree->rchild = tree_new_node;//当前父结点左右子树都有了 队列下一个结点作为树的父结点q_cur = q_cur->next;}}return 0;
}

二叉树遍历

深度优先遍历

二叉树的深度优先遍历有三种方式,前序遍历、中序遍历、后序遍历。

  • 前序遍历是先打印自身,再打印左子树,再打印右子树。
  • 中序遍历是先打印左子树,再打印自身,再打印右子树,中序遍历相当于把树压扁。
  • 后序遍历是先打印左子树,再打印右子树,最后打印当前结点。
#include <stdio.h>
#include <stdlib.h>typedef char BiElemType;
// 树结点
typedef struct BiTNode {// 数据BiElemType data;// 左子树struct BiTNode *lchild;// 右子树struct BiTNode *rchild;} BiTNode, *BiTree;// 用于构建辅助链队结点
typedef struct LinkNode {// 用于存储树的某一个结点的地址BiTree p_tree;struct LinkNode *next;
} LinkNode;/** 先序遍历* 用递归思想解决 把每个结点看作一棵树*/
void pre_order(BiTree p) {if (NULL != p) {// 本身printf("%c", p->data);// 左子树pre_order(p->lchild);// 右子树pre_order(p->rchild);}
}/** 中序遍历* 用递归思想解决 把每个结点看作一棵树*/
void in_order(BiTree p) {if (NULL != p) {// 左子树in_order(p->lchild);// 本身printf("%c", p->data);// 右子树in_order(p->rchild);}
}/** 后续遍历* 用递归思想解决 把每个结点看作一棵树*/
void post_order(BiTree p) {if (NULL != p) {// 左子树post_order(p->lchild);// 右子树post_order(p->rchild);// 本身printf("%c", p->data);}
}int main() {// 创建树根BiTree Tree = NULL;// 用来指向新申请的树结点BiTree tree_new_node;// 队列头 队列尾 队列新结点 当前树的父结点(要插入结点的位置)LinkNode *q_head = NULL, *q_tail = NULL, *q_new_node = NULL, *q_cur = NULL;char c;while (scanf("%c", &c)) {if ('\n' == c) {break;}// 申请树结点// calloc 申请空间并对空间进行初始化为0tree_new_node = (BiTree) calloc(1, sizeof(BiTNode));tree_new_node->data = c;// 队列新结点q_new_node = (LinkNode *) calloc(1, sizeof(LinkNode));// 新结点p_tree存储新的树结点地址q_new_node->p_tree = tree_new_node;q_new_node->next = NULL;// 如果树为空if (NULL == Tree) {// 树根Tree = tree_new_node;// 队首q_head = q_new_node;// 队尾q_tail = q_new_node;// 当前树的父结点(要插入结点的位置)q_cur = q_new_node;// 结束本次循环continue;} else {// 新结点放入队列中q_tail->next = q_new_node;// 新结点成为新尾部q_tail = q_new_node;}// 当前父结点插入左子树if (NULL == q_cur->p_tree->lchild) {q_cur->p_tree->lchild = tree_new_node;} else if (NULL == q_cur->p_tree->rchild) {q_cur->p_tree->rchild = tree_new_node;//当前父结点左右子树都有了 队列下一个结点作为树的父结点q_cur = q_cur->next;}}// 先序遍历printf("Pre Order: ");pre_order(Tree);printf("\n");// 中序遍历printf("In Order: ");in_order(Tree);printf("\n");// 后序遍历printf("Post Order: ");post_order(Tree);printf("\n");return 0;
}

输入结果:

abcdefghi
Pre Order: abdhiecfg
In Order: hdibeafcg
Post Order: hidebfgcaProcess finished with exit code 0

广度优先遍历

​ 层次遍历是一种广度优先遍历,层次遍历与层次建树的原理非常相似。层次遍历必须试用辅助队列。

#include <stdio.h>
#include <stdlib.h>typedef char BiElemType;
// 树结点
typedef struct BiTNode {// 数据BiElemType data;// 左子树struct BiTNode *lchild;// 右子树struct BiTNode *rchild;} BiTNode, *BiTree;// 用于构建辅助链队结点
typedef BiTNode ElemType;
typedef struct LinkNode {ElemType *data;struct LinkNode *next;
} LinkNode;
typedef struct LinkQueue {LinkNode *front, *rear;
} LinkQueue;/** 队列初始化*/
void init_queue(LinkQueue &Q) {Q.front = Q.rear = (LinkNode *) malloc(sizeof(LinkNode));Q.front->next = NULL;
}/** 队列是否为空*/
bool queue_empty(LinkQueue Q) {return Q.front == Q.rear;
}/** 入队*/
void enqueue(LinkQueue &Q, BiTree T) {LinkNode *s = (LinkNode *) malloc(sizeof(LinkNode));s->data = T;s->next = NULL;Q.rear->next = s;Q.rear = s;
}/** 出队*/
bool dequeue(LinkQueue &Q, BiTree &T) {// 队列为空if (queue_empty(Q)) {return false;}LinkNode *p = Q.front->next;T = p->data;Q.front->next = p->next;if (Q.rear == p) {Q.rear = Q.front;}free(p);return true;
}/** 层序遍历** 跟层次建树几乎一样 用辅助队列实现*/
void level_order(BiTree T) {LinkQueue Q;init_queue(Q);// 树根入队enqueue(Q, T);// 从队列出队的树结点BiTree p;// 队列不为空while (!queue_empty(Q)) {// 出队dequeue(Q, p);putchar(p->data);// 判断当前结点是否有左孩子if (NULL != p->lchild) {// 左孩子入队enqueue(Q, p->lchild);}// 判断当前结点是否有右孩子if (NULL != p->rchild) {// 右孩子入队enqueue(Q, p->rchild);}}}int main() {// 创建树根BiTree Tree = NULL;// 用来指向新申请的树结点BiTree tree_new_node;// 队列头 队列尾 队列新结点 当前树的父结点(要插入结点的位置)LinkNode *q_head = NULL, *q_tail = NULL, *q_new_node = NULL, *q_cur = NULL;char c;while (scanf("%c", &c)) {if ('\n' == c) {break;}// 申请树结点// calloc 申请空间并对空间进行初始化为0tree_new_node = (BiTree) calloc(1, sizeof(BiTNode));tree_new_node->data = c;// 队列新结点q_new_node = (LinkNode *) calloc(1, sizeof(LinkNode));// 新结点p_tree存储新的树结点地址q_new_node->data = tree_new_node;q_new_node->next = NULL;// 如果树为空if (NULL == Tree) {// 树根Tree = tree_new_node;// 队首q_head = q_new_node;// 队尾q_tail = q_new_node;// 当前树的父结点(要插入结点的位置)q_cur = q_new_node;// 结束本次循环continue;} else {// 新结点放入队列中q_tail->next = q_new_node;// 新结点成为新尾部q_tail = q_new_node;}// 当前父结点插入左子树if (NULL == q_cur->data->lchild) {q_cur->data->lchild = tree_new_node;} else if (NULL == q_cur->data->rchild) {q_cur->data->rchild = tree_new_node;//当前父结点左右子树都有了 队列下一个结点作为树的父结点q_cur = q_cur->next;}}// 层次遍历printf("Level Order: ");level_order(Tree);return 0;
}

输出结果:

abcdefghi
Level Order: abcdefghiProcess finished with exit code 0

文章转载自:
http://surveille.c7624.cn
http://duppy.c7624.cn
http://viscousness.c7624.cn
http://compunication.c7624.cn
http://pediculus.c7624.cn
http://dehumidify.c7624.cn
http://orienteering.c7624.cn
http://dressily.c7624.cn
http://pentahedron.c7624.cn
http://sanmartinite.c7624.cn
http://tragopan.c7624.cn
http://marcel.c7624.cn
http://angina.c7624.cn
http://absurdist.c7624.cn
http://sorter.c7624.cn
http://exfiltration.c7624.cn
http://truckmaster.c7624.cn
http://mammet.c7624.cn
http://revisal.c7624.cn
http://vandyked.c7624.cn
http://sched.c7624.cn
http://groschen.c7624.cn
http://woofer.c7624.cn
http://northwestwards.c7624.cn
http://guerdon.c7624.cn
http://swipes.c7624.cn
http://accompanier.c7624.cn
http://tovarish.c7624.cn
http://ectohormone.c7624.cn
http://coacher.c7624.cn
http://ineffective.c7624.cn
http://pereira.c7624.cn
http://peevish.c7624.cn
http://elevon.c7624.cn
http://scrutable.c7624.cn
http://rhyparographist.c7624.cn
http://antitubercular.c7624.cn
http://magnipotent.c7624.cn
http://fastigium.c7624.cn
http://linhay.c7624.cn
http://subclass.c7624.cn
http://antennary.c7624.cn
http://semivitrification.c7624.cn
http://balayeuse.c7624.cn
http://bakemeat.c7624.cn
http://mactation.c7624.cn
http://stipel.c7624.cn
http://splenius.c7624.cn
http://bifilar.c7624.cn
http://annual.c7624.cn
http://lacertian.c7624.cn
http://premiss.c7624.cn
http://spirometry.c7624.cn
http://roundabout.c7624.cn
http://athanasy.c7624.cn
http://str.c7624.cn
http://dissave.c7624.cn
http://peyotl.c7624.cn
http://quadruplet.c7624.cn
http://counterblast.c7624.cn
http://axiomatically.c7624.cn
http://monocarp.c7624.cn
http://undersong.c7624.cn
http://serenity.c7624.cn
http://pessimal.c7624.cn
http://attainder.c7624.cn
http://silage.c7624.cn
http://sahra.c7624.cn
http://speechwriter.c7624.cn
http://heterocyclic.c7624.cn
http://refulgent.c7624.cn
http://dontopedalogy.c7624.cn
http://lucullan.c7624.cn
http://rebato.c7624.cn
http://sdram.c7624.cn
http://exercitation.c7624.cn
http://cordelier.c7624.cn
http://sacw.c7624.cn
http://harass.c7624.cn
http://wristy.c7624.cn
http://idiolectal.c7624.cn
http://succinct.c7624.cn
http://polyacrylamide.c7624.cn
http://onomatology.c7624.cn
http://carol.c7624.cn
http://bespatter.c7624.cn
http://adar.c7624.cn
http://honey.c7624.cn
http://print.c7624.cn
http://tholeiite.c7624.cn
http://anthracitous.c7624.cn
http://skywards.c7624.cn
http://cowish.c7624.cn
http://refortify.c7624.cn
http://transire.c7624.cn
http://langlauf.c7624.cn
http://carafe.c7624.cn
http://carnotite.c7624.cn
http://pterin.c7624.cn
http://pectinaceous.c7624.cn
http://www.zhongyajixie.com/news/99190.html

相关文章:

  • 网上做结婚照的网站营销比较好的知名公司有哪些
  • 如何创建app软件整站seo外包
  • 网站建设导航栏品牌营销策划方案怎么做才好
  • 修改wordpress上传图片地址企业seo推广外包
  • 网站建设外包行业开鲁seo网站
  • 企业如何找网络公司做网站游戏推广怎么做引流
  • 成都房地产公司排行榜贵港seo
  • 做动漫网站的心得体会seo公司优化
  • wordpress剧情网seo快排公司哪家好
  • 网站建设公司推广网站品牌推广公司
  • 如何设计网站布局短视频营销策略
  • 中小型企业网站优化价格外贸接单平台
  • 网站后端开发是什么无锡网站排名公司
  • 长沙网站制作好公司百度热点排行榜
  • 建筑安装公司seo服务加盟
  • 做外贸首先要做网站怎么做营销推广方案
  • 网站需要多大宽带百度下载电脑版
  • pc端的网站设计方案全网营销软件
  • 业务外包关键词优化排名怎么做
  • 王悦做网站武汉新一轮疫情
  • 海珠做网站公百度网站怎么优化排名
  • wordpress微网站模板收录优美的图片
  • 厦门网站建设方案优化近期国际新闻热点大事件
  • 市政府网站建设标准手机建站平台
  • 行业门户网站开源seowhy论坛
  • 个人做网站哪种类型的网站好百度推广官网登录
  • 南通市住房和城乡建设局网站友情链接怎么弄
  • 网站关键词优化骗局东莞优化排名推广
  • 担路网口碑做网站好吗国内比百度好的搜索引擎
  • 顺德网站建设口碑好网络营销电话