当前位置: 网站首页>小程序开发>网站开发

承德小程序制作【承德企业邮箱】承德网站外包、承德微信商城开发、承德网店美工、承德淘宝设计

发表日期: 2021-04-13 11:15:51 浏览次数:84

承德小程序制作【承德企业邮箱】承德网站外包、承德微信商城开发、承德网店美工、承德淘宝设计


承德,河北省地级市,河北省政府批复确定的河北国际旅游城市、连接京津辽蒙的区域性中心城市 [1]  。截至2019年,全市下辖3个区、4个县、代管1个县级市和3个自治县,总面积39519平方公里,常住人口347.32万人,城镇人口180.85万人,城镇化率52.07%。 [2] 

承德地处中国东北地区、河北省东北部,南邻京津,北接赤峰和锡林郭勒,东西与朝阳、秦皇岛、唐山、张家口相邻,距省会石家庄435公里,距北京225公里。 [3]  是连接京津冀辽蒙的重要节点,具有“一市连五省”的独特区位优势,是国家甲类开放城市,中国普通话标准音采集地、中国摄影之乡、中国剪纸之乡。 [4] 

承德是首批国家历史文化名城,1703年清康熙修建避暑山庄,成为清王朝的第二个政治中心;1723年设热河厅;1733年雍正取“承受先祖德泽”之义;赐字“皇承天德”释义先皇秉承天地化育万物的恩德; [5]  设承德直隶州,始称“承德”;民国和解放初期为原热河省省会;1955年,热河省建制撤销,承德划归河北省,为省辖市。承德的避暑山庄及其周围寺庙是中国十大风景名胜、旅游胜地四十佳、国家重点风景名胜区,被联合国教科文组织批准为世界文化遗产,也是国家首批世界文化遗产。 [4] 

2012年,承德被评为中国“十大特色休闲城市”。2016年11月,承德市被中华人民共和国国家旅游局评为第二批国家全域旅游示范区。2017年10月,承德市入选国家森林城市。 [6]  2017年12月,获得“厕所革命优秀城市奖”。

5.6 二叉树

本节展现了另一种树——二叉树,它和5.2节介绍的“普通”树是不同的。在二叉树中,节点最多有两个子节点,而且并不是自然地从左起为子节点计数,而是有两个“槽”,其中一个用来存放左子节点,另一个用来存放右子节点。这两个槽中可能有一个为空,也可能两个都为空。

图 5-27 两棵各只有两个节点的二叉树

示例 5.19

图5-27展示了两棵二叉树。它们均以n1为根节点。第一棵树以n2为左子节点,且没有右子节点。而第二棵树则没有左子节点,n2是其根节点的右子节点。在这两棵树中,n2都是既没有左子节点也没有右子节点。它们均为只有两个节点的二叉树。

接下来将按照如下方式递归地定义二叉树。

依据。空树是二叉树。

归纳。如果r 是节点,而且T1T2都是二叉树,那么以r 为根节点,T1为左子树,T2为右子树可以组成一棵二叉树,如图5-28所示。也就是说,T1的根节点就是r的左子节点,除非T1是空树,因为这种情况下r 没有左子节点。同样地,T2的根节点是r 的右子节点,除非T2是空树,因为这种情况下r没有右子节点。

图 5-28 二叉树的递归定义

5.6.1 二叉树的术语

5.2节引入的路径、祖先和子孙的概念也适用于二叉树。也就是说,左子节点和右子节点都归为“子节点”。路径仍然是节点m1m2、…、mk 按照mi+1mii=1,2,…,k-1)的(左或右)子节点的方式串联起来的序列。这条路径称为从m1mk 的路径。k=1的情况也是可以的,这样的话路径上就只有一个节点。

如果某个节点存在两个子节点,那么这两个子节点就互为兄弟节点。叶子节点是指既没有左子节点也没有右子节点的节点,还可以认为叶子节点是左子树和右子树都为空树的节点。内部节点则指不是叶子节点的节点。

路径长度、高度和深度的定义与普通的树是完全相同的。二叉树路径的长度要比节点数小1,也就是说,长度就是路径上父子关系对的数量。节点n 的高度是指n 到其子孙叶子节点最长路径的长度。二叉树的高度就是其根节点的高度。节点n 的深度是指从根节点到n 的路径的长度。

示例 5.20

图5-29展示了具有3个节点的二叉树可能形成的5种形状。在图5-29所示的每棵二叉树中,n3都是n1的子孙,并存在从n1n3的路径。n3在每棵树中都是叶子节点,而n2在中间那棵树中是叶子节点,在其他4棵树中都是内部节点。

n3在每棵树中的高度都为0,n1除了在中间那棵树的高度为1之外,在其他树中的高度都为2。每棵树的高度都与n1在那棵树中的高度一致。节点n3除了在中间那棵树的深度为1之外,在其他树中深度都为2。

{%}

图 5-29 具有3个节点的5种二叉树

(普通)树和二叉树的区别

尽管二叉树要求区分子节点是左子节点还是右子节点,但普通的树却没有这样的限制,理解这一点是很重要的。也就是说,二叉树不仅是节点的子节点数全都不多于两个的树。图5-27中的两棵树不仅是互不相同,而且与由根节点及根节点的子节点组成的如下普通树也没有关系。

这里还存在一个技术上的区别。尽管树的定义中表示树至少有一个节点,但二叉树中可以存在空树,也就是没有节点的树。

5.6.2 二叉树的数据结构

有一种很自然的方式可以用于表示二叉树。节点可以表示为具有leftChildrightChild这两个分别指向左子节点和右子节点的字段的记录。出现在这两个字段中的NULL指针就表示对应的左子树或右子树为空——也就是说节点没有左子节点或右子节点。

二叉树可以表示为指向其根节点的指针。空二叉树很自然地就被表示为NULL。因此,如下类型定义就表示二叉树。

typedef struct NODE *TREE;struct NODE {
    TREE leftChild, rightChild;};复制代码

在这里,“指向节点的指针”类型名为TREE,因为这一类型最常见的用途就是表示树和子树。我们既可以将leftChildrightChild字段解释为指向子节点的指针,也可以将其解释为指向左右子树本身的指针。

此外,还可以为表示NODE的结构体添加标号字段,并(或)可以添加指向父节点的指针。请注意,父指针的类型是*NODE,或是TREE的等价类型。

5.6.3 对二叉树的递归

有很多针对二叉树的自然算法可以通过递归的方式来定义。这里递归的模式要比图5-13中普通树的递归模式更具局限性,因为操作只能发生在左子树被探索之前、两棵子树的探索之间,或是两棵子树都探索完之后。对二叉树进行递归的模式如图5-30所示。

{
    action A0;
    对左子树的递归调用;
    action A1;
    对右子树的递归调用;
    action A2;}复制代码

图 5-30 二叉树递归算法的模板

示例 5.21

具有二元运算符的表达式树可以用二叉树表示。这些二叉树是很特殊的,因为节点要么有两个子节点,要么就没有子节点(一般而言,二叉树可以有只有一个子节点的节点)。例如,图5-31重现了图5-14中的表达式树,这棵表达式树可以视作二叉树。

图 5-31 由二叉树表示的表达式a+(b-c )*d

假设为节点和树定义如下类型:

typedef struct NODE *TREE;struct NODE {
    char nodeLabel;
    TREE leftChild, rightChild;};复制代码

那么图5-32就展示了用来以前序列出二叉树T 中各节点标号的递归函数。

     void preorder(TREE t)
     {(1)      if (t != NULL) {(2)          printf("%c\n", t->nodeLabel);(3)          preorder(t->leftChild);(4)          preorder(t->rightChild);
         }
     }复制代码

图 5-32 二叉树的前序排列

该函数的行为与图5-15中用于处理普通树的同名函数相似。主要区别在于,当图5-32中的函数遇到叶子节点时,它会对(缺失的)左右子节点调用自身。这些调用会立即返回,因为当tNULL时,整个函数体只有第(1)行的测试会执行。如果将图5-32中的第(3)行和第(4)行替换为:

(3)  if (t->leftChild != NULL) preorder(t->leftChild);(4)  if (t->rightChild != NULL) preorder(t->rightChild);复制代码

就可以多节省一些调用。不过,这样就不能防止其他函数以NULL为参数调用preorder了。因此,为了安全起见,要保留第(1)行的测试。


承德小程序制作承德企业邮箱承德网站外包、承德微信商城开发、承德网店美工、承德淘宝设计

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878