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

微网站模板开发企业推广方式有哪些

微网站模板开发,企业推广方式有哪些,产品促销活动方案,wordpress素材类主题目录 二叉树的遍历: 前序遍历: 中序遍历: 后序遍历: 二叉树的基本操作: 求树的结点个数(递归遍历思路): 求树的结点个数(子问题思路): 求树的…

        

目录

        二叉树的遍历:

        前序遍历:

       

       中序遍历:    

        后序遍历:

  二叉树的基本操作:

        求树的结点个数(递归遍历思路):

        求树的结点个数(子问题思路):

      求树的叶子结点个数:

        求第K层结点个数:

        求树的高度:

      判断值为value的结点是否存在:


        下述代码并不是创建二叉树的方式,而是模拟创建一颗二叉树来实现二叉树的遍历方式和体验子问题思路。

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 posOrder(TreeNode root) {if(root == null) {return;}posOrder(root.left);posOrder(root.right);System.out.print(root.val+" ");}

        代码运行结果:

        

         

        这三种遍历方式都是通过递归函数本身来遍历的,通过不断往左和往右边 “递” ,遇到空时return开始 “归” ,所以,分析二叉树递归时可以一直往左递归下去先分析,再往右分析。

        

        

  二叉树的基本操作:

        求树的结点个数(递归遍历思路):

                代码实现:

 public int countNode = 0;public void nodeSize(TreeNode root) {if(root == null) {return;}countNode++;nodeSize(root.left);nodeSize(root.right);}

        代码运行结果:

         

         可以看到,求得的结点个数为8是正确的。这种方法是通过边递归边求和的方法。

        

        求树的结点个数(子问题思路):

        对于一棵树,这样分析:

        一棵树的结点数 = 左子树结点数 + 右子树结点数 + 1。

        要是对一棵树所有结点都这样分析,就可以得到:

 public int nodeSize2(TreeNode root) {if(root == null) {return 0;}return nodeSize2(root.left) + nodeSize2(root.right) + 1;}

代码运行结果:

        

        可以得到结点数也是8 ,子问题思路对于解决二叉树问题很重要,后续也是针对二叉树的子问题思路来解决问题。

        

      求树的叶子结点个数:

        对于一棵树,这样分析:

        一棵树的叶子结点数 = 左子树叶子结点数 + 右子树叶子结点数 。

 public int getLeaf(TreeNode root) {if(root == null) {return 0;}if(root.left == null && root.right == null) {return 1;}else {return getLeaf(root.left) + getLeaf(root.right);}}

        求第K层结点个数:

        对于一棵树,这样分析:

        假如要求根为root的树的第K层结点个数:

        以子问题分析得到:

       整棵树的第K层结点数 = root.left 的第(K-1)层结点数 +  root.right 的第(K-1)层结点数 

        实现代码:

 public int getKLeve(TreeNode root,int k) {if(root == null) {return 0;}if(k == 1) {return 1;}return getKLeve(root.left,k-1) + getKLeve(root.right,k-1);}

        

        求树的高度:

         对于一棵树,  以子问题分析得到:

        整棵树的高度 = 取 左子树与右子树 最大的值 + 1.

        代码实现:

public int getHight(TreeNode root) {if(root == null) {return 0;}int leftH = getHight(root.left);int rightH = getHight(root.right);return leftH > rightH ? leftH+1 : rightH + 1;}

        

      判断值为value的结点是否存在:

        对于一棵树,分析得到:

        先判断左子树是否存在,再判断右子树是否存在,寻找过程中如果找到了就返回当前结点。

        代码实现:

public TreeNode find(TreeNode root,char value) {if(root == null) {return null;}if(root.val == value) {return root;}TreeNode leftval = find(root.left,value);if(leftval != null) {return leftval;}TreeNode rightval = find(root.right,value);if(rightval != null) {return rightval;}return null;}

        

http://www.khdw.cn/news/33989.html

相关文章:

  • 工程公司名字大全集西安网络优化哪家好
  • 哪里有建站代理加盟搜索引擎分析论文
  • 网站框架怎么做百度客服24小时人工服务在线咨询
  • 可以免费做简历的网站广州seo做得比较好的公司
  • python做网站入门seo搜索引擎优化教程
  • 电子商务网站建设试题3百度直播间
  • 北京网站开发网络公司宁波seo外包服务商
  • cpc广告接单平台优化网站的方法有哪些
  • 湛江商城网站制作公司西安楼市最新房价
  • 眉山住房和城乡建设局网站google中文搜索引擎
  • 怎么样做网站才可以加重权重整站优化加盟
  • 济阳建设局网站空间刷赞网站推广
  • 网站建设与推广方案北京seo关键词
  • 网站做好了怎么上线关键词优化公司费用多少
  • seo网站做推广公司友好链接
  • 网站做留言板怎么清空源码免费h5制作网站
  • 台州路桥区专业高端网站设计肇庆疫情最新消息
  • wordpress用什么主机什么叫优化
  • 阿坝网站制作互联网公司
  • 国内哪家公司做网站最好关键词优化排名网站
  • phpcms v9 网站搬家seo神器
  • 怎么自己设置网站模板宣传软文是什么意思
  • 长沙网站搜索排名百度seo最新算法
  • 网站所有二级目录seo的培训网站哪里好
  • 做网站能拿多少钱安徽做网站公司哪家好
  • 网站如何更新维护seo服务深圳
  • 中山手机网站建设电话人工智能培训机构排名前十
  • 网站建设 div怎么用企业网搭建
  • 域名已买 可以找其它人做网站吗关键词搜索点击软件
  • 设计类型的网站东营网站seo