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

有什么做设计接任务的网站推广网上国网

有什么做设计接任务的网站,推广网上国网,wordpress中的联系在哪里,新房地产网站开发一、二叉树的链式存储 二叉树的存储分为顺序存储和链式存储 (本文主要讲解链式存储) 二叉树的链式存储是通过一个一个节点引用起来的,常见的表示方式有二叉三叉 // 孩子表示法 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.dinnco.com/news/21959.html

相关文章:

  • 网站新闻百度收录管理方面的培训课程
  • 网站后台下载图片关键词seo排名公司
  • 可信网站认证服务商广告营销策划方案模板
  • 网站特效怎么做自适应全网推广怎么做
  • 长沙公司建设网站学电商哪个培训学校好
  • 网站开发公司代理百度app最新版本
  • 电子商务就业前景长沙网站seo优化排名
  • 郑州艾特软件 网站建设营销型网站的类型
  • 怎样用hbuilder做网站怎么投放广告
  • 做网站常用代码向右浮动怎么写百度知道一下首页
  • 开学第一课汉字做网站凡科小程序
  • 网站筑云做关键词ks刷粉网站推广马上刷
  • 西安优秀的集团门户网站建设服务商站长工具seo查询
  • 深圳专业集团网站建设平台推广销售话术
  • 做视频解析网站播放器和接口厦门推广平台较好的
  • 网站开发团队成员介绍巩义网络推广公司
  • 学做网站需要多长时间chrome谷歌浏览器
  • 广州黄埔做网站的公司兰州seo整站优化服务商
  • 佛山做网站开发杭州百度百科
  • 中纪委网站推荐新时期的建设动态网站建设
  • 广东网站备案时间营销软文范例大全
  • 做日文网站网络建站公司
  • 电子商务网站建设素材广州线下培训机构停课
  • 做网站税点百度推广按点击收费
  • 咸阳做网站公司电话怎样做seo搜索引擎优化
  • 我的班级网站模板预测2025年网络营销的发展
  • wordpress刷赞网站源码自己建网站怎么弄
  • 杭州 网站制作天津网络优化推广公司
  • 网页设计制作是干什么的广州seo顾问服务
  • 网站建设公司不赚钱百度搜索排行seo