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

设计网站名称招聘网站的销售怎么做

设计网站名称,招聘网站的销售怎么做,好医生网站继续教育网,手机兼职在哪个网站做一、二叉树的链式存储 二叉树的存储分为顺序存储和链式存储 (本文主要讲解链式存储) 二叉树的链式存储是通过一个一个节点引用起来的,常见的表示方式有二叉三叉 // 孩子表示法 class Node { int val; // 数据域 Node left; // 左孩子的引用…

一、二叉树的链式存储

二叉树的存储分为顺序存储链式存储

(本文主要讲解链式存储)

二叉树的链式存储是通过一个一个节点引用起来的,常见的表示方式有二叉三叉

// 孩子表示法

class Node {

   int val; // 数据域

   Node left; // 左孩子的引用,常常代表左孩子为根的整棵左子树

   Node right; // 右孩子的引用,常常代表右孩子为根的整棵右子树

}

// 孩子双亲表示法

class Node {

   int val; // 数据域

   Node left; // 左孩子的引用,常常代表左孩子为根的整棵左子树

   Node right; // 右孩子的引用,常常代表右孩子为根的整棵右子树  

   Node parent;    // 当前节点的根节点

}

孩子双亲表示法在后续介绍,本文采用孩子表示法来构建二叉树

二、二叉树的遍历

前序遍历:根  左  右

中序遍历:左  根  右

后序遍历:左  右  根

层序遍历:从上到下  从左到右  依次遍历

所有的遍历都是沿着某条路线进行的

上图二叉树的各遍历分别是:

前序:A B D C E F

中序:D B A E C F

后序:D B E F C A

层序:A B C D E F 

例题:

1.某完全二叉树层次输出(同一层从左到右)的序列为 ABCDEFGH 。该完全二叉树的前序序列为()

A: ABDHECFG   B: ABCDEFGH   C: HDBEAFCG   D: HDEBFGCA

题解:

前序:ABDHECFG

2.二叉树的前序遍历和中序遍历如下:前序遍历:EFHIGJK;中序遍历:HFIEJKG.则二叉树根结点为()

A: E           B: F           C: G           D: H

题解:

后序遍历:H I F K J G E

3.设一课二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树前序遍历序列为()

A: adbce       B: decab       C: debac       D: abcde

题解:

前序遍历:a  b  c  d  e  

4.某二叉树的后序遍历序列与中序遍历序列相同,均为 ABCDEF ,则按层次输出(同一层从左到右)的序列为()

A: FEDCBA     B: CBAFED     C: DEFCBA     D: ABCDEF

题解:

根据前几道题目的方法能画出二叉树:

层序遍历:F E D C B A 

注意:根据前序和后序不能创建二叉树,只能确定根的位置,无法确定左右子树的位置

三、二叉树的基本操作与图解


public class MyBinaryTree {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;//根节点}// 前序遍历void preOrder(TreeNode root){if(root == null){return;}System.out.print(root.val+" ");preOrder(root.left);preOrder(root.right);}//中序遍历void inOrder(TreeNode root){if(root == null){return;}inOrder(root.left);System.out.print(root.val+" ");inOrder(root.right);}//后序遍历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;}int ret = size(root.left)+size(root.right)+1;return ret;//子问题思路}public int nodeSize;public void size2(TreeNode root){if(root==null){return ;}nodeSize++;size2(root.left);size2(root.right);}//整棵树的叶子节点个数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);}//遍历思路public int leafSize;public void getLeafNodeCount2(TreeNode root){if(root==null){return ;}//左子树的叶子节点+右子树的叶子节点就是整棵树的叶子if(root.left==null&&root.right==null){leafSize++;}getLeafNodeCount2(root.left);getLeafNodeCount2(root.right);}// 获取第K层节点的个数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);}// 获取二叉树的高度int getHeight(TreeNode root){if(root==null){return 0;}//整棵树的高度=左树高度和右树高度的最大值+1int leftHeight = getHeight(root.left);int rightHeight = getHeight(root.right);return leftHeight > rightHeight ? leftHeight+1 : rightHeight+1;}// 检测值为value的元素是否存在TreeNode find(TreeNode root, int val){if(root==null){return null;}if(root.val==val){return root;}TreeNode ret = find(root.left,val);if(ret !=null){return root;}ret = find(root.right,val);if(ret !=null){return root;}return null;}
}

递归遍历代码讲解:以前序遍历为例

 求节点个数代码图解:

获取k层节点的个数图解:

 获取二叉树的高度图解:

 

检测为value的值是否存在图解:

http://www.yayakq.cn/news/96624/

相关文章:

  • 网站开发中怎么设置快捷键推广一款app的营销方案
  • php学完可以做网站常州小型网站建设
  • 宿州高端网站建设网上服务大厅登录平台
  • 聚合页面网站什么时候做网站开发项目实训总结
  • 网站网络推广推广西部数码官方网站
  • 深圳金融投资网站建设网站主页 内页 关键词 一样
  • 公司网站建设的优势陕西餐饮加盟网站建设
  • 网站排名优化软件个人网站审批
  • 网站demo制作工具中国最新军事新闻视频
  • dw 8做的网站怎么上传wordpress textarea
  • 百度站长平台论坛外贸网站推广有用吗
  • 销售新网站推广策略寿县移动公司网站建设
  • 视频网站公司做pcr查基因序列的网站
  • 网站标签图标代码建设信用卡申请官方网站
  • 做网站的时候字体应该多大购物网站最近浏览怎么做
  • 先做网站后付款青岛网站建设报价
  • 不用模板 网站腾讯企业邮箱登录入口网址
  • 二级域名可以做淘客网站手机上怎么做网站
  • 数据库网站开发价格湖南健康码
  • 成都网站建设有名的asp sqlite网站空间
  • WordPress的站内地图做电子板报的网站
  • 个人网站模板 html5wordpress蜘蛛爬虫记录
  • 网站模版建设工具怎么做音乐网站
  • 新手做网站详细步骤免费的html
  • 电商网站开发平台用什么人开发大足区城乡建设投资集团网站
  • 网站素材下载网络公司在哪里
  • 广告 网站举例dw网站建设代码
  • 繁峙做网站建设电子商城网站开发与设计
  • 网站开发技术语言的选择app编程入门教程
  • 网站经营内容上上佳食品 网站建设