牛客小题练手 | 二叉树(三)
创始人
2024-01-16 19:22:43
0

 🌈刷题,面试,求职,快来牛客网一起成为offer收割机!

点击注册收割offerd924065539c14401af169e0db320941a.png

一、BM32 合并二叉树

描述

已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:
两颗二叉树是:
                                                   

 

合并后的树为: 

 

 

数据范围:树上节点数量满足 0 ≤n≤500,树上节点的值一定在32位整型范围内。

进阶:空间复杂度 O(1)) ,时间复杂度 O(n)

点击下方链接,跳转做题🔻BM32 合并二叉树icon-default.png?t=M85Bhttp://m6r.cn/QgJFm

思路:判断两棵树的相同位置的节点,以t1 树为基准树,当t1树的节点为空,t2树的节点不为空时,两者都不为空时,将t1.val + t2.val 即可  接下来t1 的左子树是:合并 t1左子树 t2左子树之后的左子树。t1 的右子树:是 合并 t1右子树 t2右子树之后的右子树,最终t1就是合并之后的根节点。

public class Solution {/*** * @param t1 TreeNode类 * @param t2 TreeNode类 * @return TreeNode类*/public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {// write code hereif(t1 == null){return t2;}if(t2 == null){return t1;}t1.val = t1.val + t2.val;t1.left = mergeTrees(t1.left,t2.left);t1.right = mergeTrees(t1.right,t2.right);return t1;}
}

二、BM31 对称的二叉树 

描述

给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如:                                 下面这棵二叉树是对称的

下面这棵二叉树不对称。

 

数据范围:节点数满足0≤n≤1000,节点上的值满足∣val∣≤1000

要求:空间复杂度 O(n),时间复杂度 O(n)

BM31 对称的二叉树icon-default.png?t=M85Bhttp://m6r.cn/j1t4i

思路:判断二叉树的左右树是否空,如果左树和右树都为空,则返回 true ,左子树为空,右子树不为空或者右子树为空左子树不为空返回 false,对应的左子树的val值与右子树的 val值不相等,返回false ,递归左子树的左节点和右子树的右节点即可

public class Solution {boolean isSymmetrical(TreeNode pRoot) {if(pRoot == null){return true;}return isSymmetricalChild(pRoot.left,pRoot.right);  }private boolean isSymmetricalChild(TreeNode leftTree,TreeNode rightTree){if(leftTree == null && rightTree == null){return true;}if(leftTree!= null && rightTree == null || leftTree == null && rightTree != null){return false;}if(leftTree.val != rightTree.val){return false;}return isSymmetricalChild(leftTree.left,rightTree.right)&&isSymmetricalChild(leftTree.right,rightTree.left);}
}

三 、 左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

输入: root = [3,9,20,null,null,15,7] 
输出: 24 
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

思路 : 按照深读优先搜索,如果满足左节点的左右子树都为空即叶子节点时,将左叶子节点的 val 值储存在 sum中即可

class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root == null){return 0;}Queue qu = new LinkedList<>();qu.offer(root);int sumLeaf = 0;while(!qu.isEmpty()){TreeNode cur = qu.poll();if(cur.left != null){if(isLeafNode(cur.left)){sumLeaf += cur.left.val;}else{qu.offer(cur.left);}}if(cur.right != null){qu.offer(cur.right);}}return sumLeaf;}public boolean isLeafNode(TreeNode root){return root.left == null && root.right == null;}
}

ced485cbb11e458d81a746890b32cf3f.gif

相关内容

热门资讯

火山口国家地质公园导游词 火山口国家地质公园导游词  朋友们,相信你一定知道火山,在电视或电影里看过火山爆发的场景,一定会被它...
秦兵马俑导游词 秦兵马俑导游词15篇  作为一名尽职尽责的导游,编写导游词是必不可少的,导游词是我们引导游览时使用的...
晋祠导游词 晋祠导游词  作为一名专门为游客提供帮助的导游,通常需要准备好一份导游词,导游词具有极强的实用性,涉...
昆明大观楼导游词 昆明大观楼导游词  作为一名专门为游客提供帮助的导游,常常要写一份好的导游词,导游词是导游员在游览时...
许昌西湖公园的导游词 许昌西湖公园的导游词  今天,我带领大家来游览位于许昌市中心的西湖公园,希望我们能一起渡过一段快乐的...
刘公岛导游词 刘公岛导游词范文(精选5篇)  作为一名乐于助人的导游,总归要编写导游词,导游词是导游员同游客交流思...
九龙洞风景区导游词贵州导游词 九龙洞风景区导游词贵州导游词  作为一名默默奉献的导游,时常需要编写导游词,导游词一般是根据实际的游...
云南澜沧江导游词 云南澜沧江导游词  澜沧江是湄公河上游在中国境内河段的名称,藏语拉楚,意思为“獐子河”。它也是中国西...
新疆概况旅游导游词 新疆概况旅游导游词范文(精选3篇)  作为一名尽职尽责的导游,有必要进行细致的导游词准备工作,借助导...
颐和园的导游词资料 关于颐和园的导游词资料  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...
北京导游词 北京导游词(合集15篇)  作为一名优秀的旅游从业人员,时常要开展导游词准备工作,一篇完整的导游词,...
泰山景点介绍导游词 泰山景点介绍导游词(通用5篇)  作为一位不辞辛劳的导游,通常需要准备好一份导游词,导游词可以加深游...
校园导游词 校园导游词  作为一名专门引导游客、助人为乐的导游,就难以避免地要准备导游词,导游词一般是根据实际的...
韩国景点导游词 韩国景点导游词  大家好!  首先,欢迎大家到韩国首尔来旅游,下面就由我给大家介绍一下这个具有东方神...
介绍洛阳的导游词 介绍洛阳的导游词  洛阳位于河南,在那里有许多的特色文化,那么关于介绍洛阳的导游词都有哪些呢?下面是...
桂林聚龙潭导游词 桂林聚龙潭导游词  作为一位无私奉献的导游,时常需要用到导游词,导游词不是以一代百、千篇一律的,它必...
炳灵寺石窟导游词 炳灵寺石窟导游词  作为一名尽职尽责的导游,常常要根据讲解需要编写导游词,导游词是导游人员引导游客观...
西安大雁塔导游词 西安大雁塔导游词500字  游客朋友们:  大家好!  欢迎大家到西安大雁塔观光旅游!  大雁塔位于...
马鞍山森林公园讲解词 马鞍山森林公园讲解词  森林公园的导游词篇一:马鞍山森林公园导游词  大家好!欢迎来到马鞍山森林公园...