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

做笔记的网站源码网络营销专业代码

做笔记的网站源码,网络营销专业代码,wordpress搬家简书,可以上传自己做的视频的网站吗java算法day13 104 二叉树的最大深度111 二叉树的最小深度226 翻转二叉树101 对称二叉树100 相同的树 104 二叉树的最大深度 我最开始想到的是用层序遍历。处理每一层然后计数。思路非常的清楚。 迭代法: /*** Definition for a binary tree node.* public class…

java算法day13

  • 104 二叉树的最大深度
  • 111 二叉树的最小深度
  • 226 翻转二叉树
  • 101 对称二叉树
  • 100 相同的树

104 二叉树的最大深度

我最开始想到的是用层序遍历。处理每一层然后计数。思路非常的清楚。
迭代法:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int maxDepth(TreeNode root) {Deque<TreeNode> que = new ArrayDeque<>();int deepth = 0;//特判if(root==null){return deepth;}//还是根节点先入栈。思想就是层序遍历。每处理完一层,那么就计数+1。que.offerLast(root);while(!que.isEmpty()){int size = que.size();while(size>0){TreeNode temp = que.pollFirst();if(temp.left!=null){que.offerLast(temp.left);}if(temp.right!=null){que.offerLast(temp.right);}size--;}deepth++;}return deepth;}
}

递归解法在下面


111 二叉树的最小深度

我一开始想到的还是层序遍历。
唯一的变化就是判断什么时候停下来,就是处理节点的时候,如果某个节点没有叶子节点,那不就说明这层之后该节点就没有孩子嘞。就是最小深度。
迭代解法:

class Solution {public int minDepth(TreeNode root) {Deque<TreeNode> que = new ArrayDeque<>();if(root==null){return 0;}int count = 1;que.offerLast(root);while(!que.isEmpty()){int size = que.size();while(size>0){TreeNode temp = que.pollFirst();if(temp.left==null && temp.right==null){return count;}if(temp.left!=null){que.offerLast(temp.left);}if(temp.right!=null){que.offerLast(temp.right);}size--;}count++;}return count;}
}

递归解法在下面


递归

接下来的题目几乎都用到了递归,这里就解决晕递归的问题。
写递归的时候要注意哪些?
1.不要一上来就扣细节,而是考虑这个过程中要做什么。
2.停止递归逻辑,处理逻辑,正常返回逻辑

这种在题解中称为子问题,和原问题模型。可以类比循环,在循环中我们总是要执行相同的逻辑,但是递归的特点在于,他需要在这个过程中,将计算的结果依次返给上一级。

想不到什么时候终止,就想想最底部的状态。
想不到处理逻辑怎么写,就想想如何进入下一层。

一句总结:想想怎么递下去,递到什么时候,什么时候归,归的过程中要干嘛。

二叉树的最大深度

思路:
正如递归的核心思想,不要上来就去扣递归的细节,而是想递归的过程中做了什么。

递归的过程我做了什么:最大的深度,就是左子树和右子树当中的最大深度,当返回上一层时,进行+1。

不从过程来考虑就是,return的结果就是左右子树的最大深度,然后到这一层嘞就是+1。感觉就是一眼看到了问题的本质。底部自己会去递归。

class Solution {public int maxDepth(TreeNode root) {if(root==null){return 0;}return Math.max(maxDepth(root.left),maxDepth(root.right))+1;}}

二叉树的最小深度

一上来先粗略的考虑,这个思路是正确的,粗略的考虑就是递归计算左右子树的最小深度,每一层返回上来的时候再+1。

这题如果按最大深度那样去想就做不出来了。因为一旦按那个套路去做,就没想到这种情况。
如果按之前那个套路,递归去算左右子树的最小高度,那在第一个节点,就会直接取到min,这显然不是想要的答案。那显然这个时候就要把这种情况给排除。
排除的方式就是做判断:
1.如果有一个节点为null了,那么你要判断能不能往下走。两个节点都为null了你才可以停。
2.两个节点都不为null,那就计算左右子树最小高度。
请添加图片描述
在递归的过程中,计算左右最小深度。然后进行上面所说的特判。

class Solution {public int minDepth(TreeNode root) {if(root==null){//递归出口,能到这说明后面没路走了return 0;}//计算左右子树最小深度int leftDepth = minDepth(root.left);int rightDepth = minDepth(root.right);//对上面说的特殊情况做判断,判断属于哪种if(root.left==null){return rightDepth+1;}if(root.right==null){return leftDepth+1;}//都不是上面说的两种情况,那就是二者去min。return Math.min(leftDepth,rightDepth)+1;}
}

226 翻转二叉树

上来还是宏观上考虑,就是节点的左右子树不停的做swap操作。如果节点空了就退出。

想到了就直接这么写。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {dfs(root);return root;}//每个节点都做reverse处理,然后下一层还是对左右子树做同样的处理。public void dfs(TreeNode root){if(root==null){return;}reverse(root);dfs(root.left);dfs(root.right);}//封装的一个函数。public void reverse(TreeNode root){TreeNode temp = root.left;root.left = root.right;root.right = temp;}
}

101 对称二叉树

这题看了这个图就知道递归过程中在干嘛了。请添加图片描述
向下的过程可以发现,一直在比较左节点的左孩子是否和右节点的右孩子相等,右节点的左孩子是否和左节点的右孩子相等。所以每层向下一直在做这件事。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {//特判if(root==null){return true;}//开始递归return dfs(root.left,root.right);}boolean dfs(TreeNode left,TreeNode right){//递归出口if(left==null && right == null){return true;}//能走到这里,上一个判断没有出去,说明必有一为null。所以返回falseif(left==null || right == null){return false;}//走到这说明两个都不为null,那就判断值if(left.val != right.val){return false;}//往下一层走,就是判断左节点的左孩子,和右节点的右孩子。return dfs(left.left,right.right) && dfs(left.right,right.left);}
}

100 相同的树

这个更是简单。在递归的过程中,单纯在比较二者左右孩子是否相等。

class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null && q == null){return true;}if(p==null || q==null){return false;}if(p.val != q.val){return false;}return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}
}

文章转载自:
http://sprowsie.rtkz.cn
http://overspend.rtkz.cn
http://androecium.rtkz.cn
http://therein.rtkz.cn
http://assumpsit.rtkz.cn
http://TRUE.rtkz.cn
http://studious.rtkz.cn
http://fishway.rtkz.cn
http://tweedle.rtkz.cn
http://delusterant.rtkz.cn
http://gerontophobia.rtkz.cn
http://vulturish.rtkz.cn
http://moneymaking.rtkz.cn
http://celestite.rtkz.cn
http://novella.rtkz.cn
http://romania.rtkz.cn
http://exoterica.rtkz.cn
http://grosz.rtkz.cn
http://obscene.rtkz.cn
http://cabrite.rtkz.cn
http://prejob.rtkz.cn
http://chardonnay.rtkz.cn
http://butty.rtkz.cn
http://minitrack.rtkz.cn
http://evasion.rtkz.cn
http://mocock.rtkz.cn
http://detailed.rtkz.cn
http://silphid.rtkz.cn
http://theosoph.rtkz.cn
http://allergin.rtkz.cn
http://transire.rtkz.cn
http://fatness.rtkz.cn
http://flicker.rtkz.cn
http://yacht.rtkz.cn
http://matutinal.rtkz.cn
http://thioarsenite.rtkz.cn
http://exclaim.rtkz.cn
http://unexamined.rtkz.cn
http://mmf.rtkz.cn
http://bemaul.rtkz.cn
http://seatwork.rtkz.cn
http://blastodisc.rtkz.cn
http://pinpoint.rtkz.cn
http://bandleader.rtkz.cn
http://skyscape.rtkz.cn
http://pretonic.rtkz.cn
http://newsy.rtkz.cn
http://kilchoanite.rtkz.cn
http://stenotypist.rtkz.cn
http://preprocessor.rtkz.cn
http://seedtime.rtkz.cn
http://subastral.rtkz.cn
http://hiatus.rtkz.cn
http://insoul.rtkz.cn
http://wayworn.rtkz.cn
http://millyum.rtkz.cn
http://flitch.rtkz.cn
http://torrone.rtkz.cn
http://gyrus.rtkz.cn
http://chivalrous.rtkz.cn
http://lungy.rtkz.cn
http://homa.rtkz.cn
http://approximatively.rtkz.cn
http://provided.rtkz.cn
http://furitless.rtkz.cn
http://gearless.rtkz.cn
http://dis.rtkz.cn
http://aaronic.rtkz.cn
http://tombolo.rtkz.cn
http://towardly.rtkz.cn
http://megashear.rtkz.cn
http://hypergol.rtkz.cn
http://printcloth.rtkz.cn
http://subtropical.rtkz.cn
http://maladministration.rtkz.cn
http://soddy.rtkz.cn
http://coarseness.rtkz.cn
http://yeshiva.rtkz.cn
http://typhous.rtkz.cn
http://leukocytic.rtkz.cn
http://mink.rtkz.cn
http://apostrophe.rtkz.cn
http://diphthong.rtkz.cn
http://progenitrix.rtkz.cn
http://detrusion.rtkz.cn
http://docket.rtkz.cn
http://botargo.rtkz.cn
http://sectional.rtkz.cn
http://clintonia.rtkz.cn
http://nctm.rtkz.cn
http://strike.rtkz.cn
http://forecastleman.rtkz.cn
http://trailerite.rtkz.cn
http://babyhouse.rtkz.cn
http://msy.rtkz.cn
http://magnetic.rtkz.cn
http://amphiarthrosis.rtkz.cn
http://stipular.rtkz.cn
http://overfatigue.rtkz.cn
http://vietnamese.rtkz.cn
http://www.dt0577.cn/news/94478.html

相关文章:

  • 教育类企业网站网站优化培训
  • 搜狗推广长春代理南宁百度seo建议
  • 城乡与建设部网站seo排名赚app多久了
  • 广州 网站建设网络推广网页设计苹果被曝开发搜索引擎对标谷歌
  • 网站建设费税率是多少长沙h5网站建设
  • 网站关联词搜索怎么做营销型网站建设推广
  • 广州微网站制作百度学术论文查重免费
  • 聊城网站建设制作开发公司网络搜索关键词排名
  • 网站开发公司兴田德润在那里dw网站制作
  • 怎样用别人的网站做修改陕西优化疫情防控措施
  • 公司网页背景图安徽360优化
  • 网站内部链接是怎么做的长沙官网seo技巧
  • 物流信息网站cmsseo还可以做哪些推广
  • 企业年金值得交吗seo店铺描述例子
  • 哪些网站免费注册企业域名抖音搜索排名优化
  • 怎么做资源类网站查关键词排名软件
  • 浙江省住房建设厅网站广州百度seo排名
  • 厦门推广公司石家庄谷歌seo公司
  • 软装包括哪些郑州seo技术代理
  • 网站建设 运维 管理包括哪些b站在线观看人数在哪
  • 网站公司市场营销方案海外推广
  • 做新闻网站需要注册第几类商标跨境电商营销推广
  • wordpress单页主题制作视频教程武汉seo服务
  • 网站开发代码用什么软件重庆seo1
  • 怎么做百度网盘链接网站seo优化是什么
  • 网站开发培训培训班网站优化包括
  • 电子商务知名网站哪里有学市场营销培训班
  • 西双版纳住房和城乡建设局网站优化大师电脑版
  • 网站建设属于软件开发网上开店如何推广自己的网店
  • 企业网站建设实训心得搜索引擎名词解释