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

做电商要关注哪些网站seo数据优化教程

做电商要关注哪些网站,seo数据优化教程,asp网站模板源码免费无限下载,郴州网站制作公司哪家好Java二叉题目练习 相同的树对称二叉树平衡二叉树二叉树的最近公共祖先二叉树的层序遍历二叉树层序遍历 ||二叉树遍历 相同的树 二叉树的题目大多数时候就可以采用递归的方法写 因为二叉树是由根左子树和右子树组成,每一棵左子树和右子树又可以被看成一颗完整的树&am…

Java二叉题目练习

  • 相同的树
  • 对称二叉树
  • 平衡二叉树
  • 二叉树的最近公共祖先
  • 二叉树的层序遍历
  • 二叉树层序遍历 ||
  • 二叉树遍历

相同的树

二叉树的题目大多数时候就可以采用递归的方法写
因为二叉树是由根左子树和右子树组成,每一棵左子树和右子树又可以被看成一颗完整的树,因此大事化小,小事化了

在这里插入图片描述

目的:就是判断两个树是完全相同
思路:采用递归的方法,因为在二叉树中树是由根、左子树和右子树组成,每一个左子树和右子树又可以被看成一颗完整的树,因此这里重要的是找好递归的截止条件就行

在这里插入图片描述

class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {//都为空的话就返回trueif(p==null&&q==null){return true;}//一个为空,一个不为空的话就返回falseif(p==null&&q!=null||p!=null&&q==null){return false;}//值不相同返回falseif(p.val!=q.val){return false;}//两个不为空且值相同的话就继续递归return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}
}

在这里插入图片描述
在这里插入图片描述

对称二叉树

在这里插入图片描述

class Solution {public boolean isSymmetric(TreeNode root) {//为空的话就返回trueif(root==null){return true;}//利用判断是否相同的方法return isSymmetrichild(root.left,root.right);}public boolean isSymmetrichild(TreeNode left,TreeNode right){if(left==null&&right!=null||left!=null&&right==null){return false;}if(left==null&&right==null){return true;}if(left.val!=right.val){return false;}return isSymmetrichild(left.left,right.right)&&isSymmetrichild(left.right,right.left);}
}

平衡二叉树

在这里插入图片描述

目的:一棵树左右深度差不大于1就是平衡二叉树
这里从底到顶进行向上返回
思路:函数Height(root)来求其左子树和右子树深度差
返回值:
如果其深度差<=1:返回当前深度,
如果深度差>1就返回-1
中止条件:
root为空时候,说明找完了,返回当前高度为0
左子树/右子树深度为-1,或者深度差>1就返回-1,说明不是平衡二叉树

在这里插入图片描述

class Solution {public boolean isBalanced(TreeNode root) {if(root==null){return true;}return Height(root)!=-1;      }//求树的深度差public int Height(TreeNode root){if(root==null){return 0;}//求出左子树和右子树int left = Height(root.left);if(left<0){return -1;}int right = Height(root.right);if(right<0){return -1;}if(left>=0&&right>=0&&Math.abs(left-right)<=1){return left>right? left+1:right+1;}else{return -1;}}
}
如果这里不是平衡二叉树,Height函数返回-1,如果是就返回其长度
所有子在isBalanced,只要判断其返回是否是-1就行

在这里插入图片描述
在这里插入图片描述

二叉树的最近公共祖先

在这里插入图片描述

目的:就是一棵二叉树中的两个节点p和q,找这两个节点最近相同的公共祖先
思路:就是在root树的左子树和右子树中找p和q,注意每一颗左子树和右子树又分别是一颗完整的树
截止:找到节点或者root为null
返回值:如果left和right都不为null,那他们的祖先就是root节点
如果left != null ,返回left节点
如果right != null,返回right节点

在这里插入图片描述

class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {//1.判断是否为空if(root==null){return null;}//2.是否找到p或者qif(root==q||root == p){return root;}//3.递归左子树和右子树进行判断TreeNode left = lowestCommonAncestor(root.left,p,q);TreeNode right = lowestCommonAncestor(root.right,p,q);if(left!=null&&right!=null){return root;}else if(left!=null){return left;}else{return right;}}
}

二叉树的层序遍历

在这里插入图片描述

目的:就是层序输出从上到下每一层的节点,这里返回List<List< Integer >>这个二维列表
思路:二维链表就是由许多一维列表组成,确定每一行的一维链表放入二维链表中就行
这里使用Queue队列来完成存放,知道队列先入先出的原则
1.先把root节点放入队列中
2.求出队列长度,确定每一行要出多少数放入一维队列中,出队列
3.判断这个出去的节点左右子树是否为空,不为空的入队列
4.最后将一链表表放入二维链表中
5.当对列为空的时候就结束了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意每次出队列的时候要计算其此时队列长度,这个长度就代表自己这一次要出队列元素个数
class Solution {public  levelOrder(TreeNode root) {//将其层序遍历分开行就行List<List<Integer>> ret = new ArrayList();if(root==null){return ret;}Queue<TreeNode> queue = new LinkedList<>();//先把头节点放进去queue.offer(root);while (!queue.isEmpty()){List<Integer> curRow = new ArrayList();//求队列长度确定出多少队列元素int size = queue.size();while(size!=0){//出队列TreeNode cur = queue.poll();curRow.add(cur.val);//判断出栈的这个左子树和右子树是否为空if(cur.left!=null){queue.offer(cur.left);}if(cur.right!=null){queue.offer(cur.right);}size--;}ret.add(curRow);}return ret;}
}

二叉树层序遍历 ||

在这里插入图片描述

目的:从下到上层序遍历
思路:和上面从上到下的层序遍历思路一样,就是最后一步的将一位链表放入二维链表中采用头插法,这样就会将其反过来了

class Solution {public  levelOrder(TreeNode root) {//将其层序遍历分开行就行List<List<Integer>> ret = new ArrayList();if(root==null){return ret;}Queue<TreeNode> queue = new LinkedList<>();//先把头节点放进去queue.offer(root);while (!queue.isEmpty()){List<Integer> curRow = new ArrayList();int size = queue.size();while(size!=0){//出队列TreeNode cur = queue.poll();curRow.add(cur.val);//判断出栈的这个左子树和右子树是否为空if(cur.left!=null){queue.offer(cur.left);}if(cur.right!=null){queue.offer(cur.right);}size--;}ret.add(curRow);}return ret;}
}

二叉树遍历

在这里插入图片描述

目的:就是给你一个前序遍历字符串(由字母和‘#’构成),’ # '表示的是空格,并中序打印
思路:1.先输入一个字符串
2.创建这棵树
3.中序遍历打印
已知先序遍历:根-》左子树-》右子树
中序遍历:左子树-》根-》右子树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里注意要先写构造树的类,这里创建树采用递归
因为每一棵树的左子树和右子树分别可以看成一颗完整的树
这里再递归的时候,每个节点的左子树和右子树回递归,回归的时候回将回归这两个节点链接起来
import java.util.Scanner;
//树的构造方法类
class TreeNode{public char val;public TreeNode left;public TreeNode right;//构造方法给其val赋值public TreeNode(char val){this.val = val;}
}
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 case//1.输入字符串String str = in.nextLine();//2.构建二叉树TreeNode root = creatTree(str);//3.中序遍历打印二叉树inorder(root);}}//确定遍历到那个字符public static int i = 0;public static TreeNode creatTree(String str){char ch = str.charAt(i);TreeNode root = null;if(ch!='#'){//将这个放入树中root = new TreeNode(ch);i++;//指向下一个root.left = creatTree(str);root.right = creatTree(str);}else{i++;}return root;}//打印public static void inorder(TreeNode root){if(root == null){return;}inorder(root.left);System.out.print(root.val+" ");inorder(root.right);}
}
http://www.dtcms.com/wzjs/62646.html

相关文章:

  • 网站ipv6改造怎么做网址收录查询
  • 政府网站建设工作意义怎么创造自己的网站
  • 大学生网站开发项目计划书范文百度排行榜明星
  • 做直播app的公司四川seo整站优化费用
  • 装修平台网站建设网站排名seo教程
  • 抖音开放平台工会搜索引擎优化答案
  • 专做充电器的网站夸克搜索
  • 官方网站建设银行上海seo有哪些公司
  • 云南网站建设一度科技公司百度口碑网
  • 做外贸 上国外网站进入百度网首页
  • 吴江网站制作公司建站系统哪个比较好
  • 北京装饰公司招聘工长seo网站优化系统
  • 兰州百度网站建设网站设计制作培训
  • 长沙企业网站建设价格seo快速排名利器
  • 怎样自己搭建一个做影视的网站网站关键词搜索排名优化
  • 最专业网站建设企业推广文案范文
  • 做饰品网站手机推广app
  • 免费地方门户网站系统seo优化排名百度教程
  • 无锡模板网站设计公司站长工具站长之家官网
  • 百度权重5的网站能卖多少钱网推app
  • 做指甲的网站夸克浏览器网页版入口
  • 做网站怎样赚卖流量百度网
  • 如何给网站做快速排名深圳白帽优化
  • 做网站自己买服务器好还是用别人的长沙seo网络公司
  • 高明网站开发公司手机网站排名优化
  • 便宜电商网站建设网站统计代码
  • 中铁建设集团官方网站百度贴吧热线客服24小时
  • 建站平台上建设的网站可以融资吗网络营销效果评估
  • 厦门企业网站建设补贴品牌互动营销案例
  • 四川营销型网站建设免费推广的网站有哪些