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

天津网站设计服务公司泊头网站建设甘肃

天津网站设计服务公司,泊头网站建设甘肃,wordpress购物模板下载,做网店装修的网站有哪些内容꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN … ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好我是xiaoxie.希望你看完之后,有不足之处请多多谅解让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶个人主页xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 系列专栏xiaoxie的JAVA系列专栏——CSDN博客●ᴗσσணღ*我的目标:团团等我( ◡̀_◡́ ҂)  ( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞 收藏⭐️ 留言​关注互三必回! 一.树 1.概念简单了解即可 树是一种 非线性 的数据结构它是由 n n0 个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树也就是说它是根朝上而叶朝下的 。它具有以下的特点 有一个特殊的结点称为根结点根结点没有前驱结点 除根结点外其余结点被分成 M(M 0) 个互不相交的集合 T1 、 T2 、 ...... 、 Tm 其中每一个集合 Ti (1 i m) 又是一棵与树类似的子树。 每棵子树的根结点有且只有一个前驱可以有 0 个或多个后继 。树是递归定义的。 注意树形结构中子树之间不能有交集否则就不是树形结构 2.树的基本术语 2.1需要重点记忆的 结点的度一个结点含有子树的个数称为该结点的度 如上图A的度为3 树的度 一棵树中所有结点度的最大值称为树的度 如上图树的度为3 叶子结点或终端结点 度为 0 的结点称为叶结点 如上图E, F, G, H, I, J 等节点为叶结点 双亲结点或父结点 若一个结点含有子结点则这个结点称为其子结点的父结点 如上图 A 是 B 的父结点 孩子结点或子结点 一个结点含有的子树的根结点称为该结点的子结点 如上图 B 是 A 的孩子结点 根结点 一棵树中没有双亲结点的结点如上图 A 结点的层次 从根开始定义起根为第 1 层根的子结点为第 2 层以此类推 树的高度或深度 树中结点的最大层次 如上图树的高度为3 2.2简单了解即可 非终端结点或分支结点 度不为 0 的结点 如上图B 、C 、D 等节点为分支结点 兄弟结点 具有相同父结点的结点互称为兄弟结点 如上图 B 、 C 是兄弟结点 堂兄弟结点 双亲在同一层的结点互为堂兄弟如上图 H 、 I 互为兄弟结点 结点的祖先 从根到该结点所经分支上的所有结点如上图 A 是所有结点的祖先 子孙 以某结点为根的子树中任一结点都称为该结点的子孙。如上图所有结点都是 A 的子孙 森林 由 m m0 棵互不相交的树组成的集合称为森林 3.树的代码表示形式简单了解 树结构相对线性表就比较复杂了要存储表示起来就比较麻烦了实际中树有很多种表示方式如双亲表示法 孩子表示法 、 孩子双亲表示法 、 孩子兄弟表示法 等等。我们这里就简单的了解其中最常用的 孩子兄弟表示法 。 class Node { int value; // 树中存储的数据 Node firstChild; // 第一个孩子引用 Node nextBrother; // 下一个兄弟引用 } 二.二叉树重点掌握 1.概念 一棵二叉树是结点的一个有限集合该集合 1. 或者为空 2. 或者是由 一个根节 点加上两棵别称为 左子树 和 右子树 的二叉树组成。 从上图可以看出 1. 二叉树不存在度大于 2 的结点 2. 二叉树的子树有左右之分次序不能颠倒因此二叉树是有序树 注意对于任意的二叉树都是由以下几种情况复合而成的 1.1二叉树的基本形态 1.2两种特殊的二叉树 1. 满二叉树 : 一棵二叉树如果 每层的结点数都达到最大值则这棵二叉树就是满二叉树 。也就是说 如果一棵 二叉树的层数为 K 且结点总数是 2^k - 1  则它就是满二叉树 。 2. 完全二叉树 : 完全二叉树是效率很高的数据结构完全二叉树是由满二叉树而引出来的。对于深度为 K 的有 n 个结点的二叉树当且仅当其每一个结点都与深度为 K 的满二叉树中编号从 0 至 n-1 的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。 2.性质 1. 若规定 根结点的层数为 1 则一棵 非空二叉树的第 i 层上最多有 2^(i-1)  (i0) 个结点 2. 若规定只有 根结点的二叉树的深度为 1 则 深度为 K 的二叉树的最大结点数是2^k - 1 (k0) 3. 对任何一棵二叉树 , 如果其 叶结点个数为 n0, 度为 2 的非叶结点个数为 n2, 则有 n0 n2 1 4. 具有 n 个结点的完全二叉树的深度 k 为 log2(n1)  上取整 5. 对于具有 n 个结点的完全二叉树 如果按照 从上至下从左至右的顺序对所有节点从 0 开始编号 则对于 序号为 i 的结点有 若i0 双亲序号 (i-1)/2 i0 i 为根结点编号 无双亲结点 若 2i1n 左孩子序号 2i1 否则无左孩子 若 2i2n 右孩子序号 2i2 否则无右孩子 3.基本操作 public class BinaryTree {static class TreeNode {public char val;public TreeNode left;public TreeNode right;public TreeNode(char val) {this.val val;}}//以穷举的方式 创建一棵二叉树出来public TreeNode createTree() {TreeNode A new TreeNode(A);TreeNode B new TreeNode(B);TreeNode C new TreeNode(C);TreeNode D new TreeNode(D);TreeNode E new TreeNode(E);TreeNode F new TreeNode(F);TreeNode G new TreeNode(G);TreeNode H new TreeNode(H);A.left B;A.right C;B.left D;B.right E;C.left F;C.right G;E.right H;return A;}//前序遍历public void preOrder(TreeNode root) {if(root null) {return;}System.out.print(root.val );preOrder(root.left);preOrder(root.right);}//中序遍历public void inOrder(TreeNode root) {if(root null){return;}inOrder(root.left);System.out.print(root.val );inOrder(root.right);}//后序遍历public void postOrder(TreeNode root) {if(root null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root.val );}// 获取二叉树中节点的个数public int size(TreeNode root) {if(root null) {return 0;}return size(root.left)size(root.right)1;}// 获取叶子节点的个数public int getLeafNodeCount(TreeNode root) {if(root null) {return 0;}if(root.left null root.right null) {return 1;}return getLeafNodeCount(root.left) getLeafNodeCount(root.right);}// 获取第K层节点的个数public int getKLevelNodeCount(TreeNode root,int k) {if(root null) {return 0;}if(k 1) {return 1;}return getKLevelNodeCount(root.left,k-1) getKLevelNodeCount(root.right,k-1);}// 获取二叉树的高度public int getHeight(TreeNode root) {if(root null) {return 0;}int leftH getHeight(root.left);int rightH getHeight(root.right);return Math.max(leftH,rightH)1;}// 检测值为value的元素是否存在public boolean find(TreeNode root,char val) {if(root null) {return false;}if(root.val val) {return true;}return find(root.left, val) || find(root.right, val);}//层序遍历使用队列来辅助//当涉及到层序遍历时通常情况下使用队列来实现会更为简单和高效public void levelOrder(TreeNode root) {if(root null) {return;}QueueTreeNode q new LinkedList();q.offer(root);while (!q.isEmpty()) {TreeNode cur q.poll();System.out.print(cur.val );if(cur.left ! null) {q.offer(cur.left);}if(cur.right ! null) {q.offer(cur.right);}}}// 判断一棵树是不是完全二叉树public boolean isCompleteTree(TreeNode root) {if (root null) {return true;}QueueTreeNode queue new LinkedList();queue.offer(root);boolean end false;while (!queue.isEmpty()) {TreeNode current queue.poll();if (current null) {end true;} else {if (end) {return false; // 如果已经遇到空节点再遇到非空节点说明不是完全二叉树}queue.offer(current.left);queue.offer(current.right);}}return true;} }三.说明 以上就是关于二叉树的一些基础问题了如果你已经对这些比较基础的问题都大概了解就可以开始尝试做题你也可以移步到博主的下一篇关于二叉树面试题的文章帮助你更好的掌握二叉树感谢你的观看愿你一天开心愉快
http://www.zqtcl.cn/news/802862/

相关文章:

  • 做网站学费多少钱0基础学app程序开发
  • 忻州建站公司辽宁省建设执业信息网官网
  • 北京网站建设 云智互联集安网站建设
  • 无锡市建设培训中心网站私人订制软件平台
  • 宁波网站设计推荐荣盛网络招远网站制作
  • 网站开发维护运维室内设计师怎么找
  • 网站建设如何增加二级页面学网络工程好找工作吗
  • 网站设计的研究方法有哪些wordpress样式路径
  • 网站建设与网页设计...南通网站seo报价
  • 网站开发毕业设计说明书范文关键词排名代做
  • 本地环境建设网站南通网站制作怎样
  • 注册公司多少钱不用交税南昌seo网站推广费用
  • 网站建设与运营的论文的范本wordpress弹框登陆
  • 阿里云做的网站空间动画制作器
  • 徐州企业网站建设做视频网站需要多少上传
  • 记事本做网站怎么加背景图网站开发需要哪些人怎么分工
  • 南宁网站建设找哪家网站被k换域名
  • spring mvc 网站开发网站开发与管理所对应的职位及岗位
  • 国内做视频的网站有哪些宁波网站制作与推广
  • 织梦软件展示网站源码建设工程竣工验收消防备案网站
  • 网站里面的链接怎么做漳州建设网站
  • 有什么网站建设类岗位企业门户网站设计论文
  • 外贸公司如何做公司网站集团网站建设建站模板
  • 嘉兴云推广网站贵州毕节网站建设
  • 班级网站模板青岛哪里有做网站公司的
  • 建设工程设计招标信息网站.制作一个聊天软件需要多少钱
  • 校园网站建设的意见新闻聚合网站开发 技术
  • 网站推广公司兴田德润电话多少wordpress 弹框
  • 大连网站建设谁家好软件开发需要什么技术
  • 广州网站建设哪家便宜成都电商app开发