首页 > 其他分享 >DAY 15 二叉树part03

DAY 15 二叉树part03

时间:2024-08-01 22:28:42浏览次数:10  
标签:right return E5% part03 int 二叉树 15 root left

 

 

110.平衡二叉树 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html

 独立完成,感觉还比较好理解

12 class Solution {
13 public:
14     bool isBalanced(TreeNode* root) {
15         if(root==nullptr) return true;
16         if(abs(gethigh(root->right)-gethigh(root->left))>1) return false;
17         else return isBalanced(root->right)&&isBalanced(root->left);
18     }
19     int gethigh(TreeNode*root)
20     {
21         int high=0;
22         if(root==nullptr) return high;
23         int righth=gethigh(root->right);
24         int lefth=gethigh(root->left);
25         high=1+max(righth,lefth);
26         return high;
27     }
28 };

257. 二叉树的所有路径 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0257.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.html

12 class Solution {
13 public:
14     vector<string> binaryTreePaths(TreeNode* root) {
15         vector<string> result;
16         vector<vector<int>> path;
17         vector<int> res;
18         if(root==nullptr) return result;
19         seekpath(root,res,path);
20         for(int i=0;i<path.size();i++)
21         {
22             string tmp;
23             for(int j=0;j<path[i].size();j++)
24             {
25                 tmp+=to_string(path[i][j]);
26                 if(j!=path[i].size()-1) tmp+="->";
27             }
28             result.push_back(tmp);
29        }
30 
31        return result;
32     }
33     void seekpath(TreeNode* root,vector<int> res, vector<vector<int>>& path)
34     {
35         res.push_back(root->val);
36         if(root->right==nullptr&&root->left==nullptr) 
37         {
38             path.push_back(res);
39             return ;
40         }
41         if(root->right) seekpath(root->right,res,path);
42         if(root->left) seekpath(root->left,res,path);
43         return ;
44 
45     }
46 };

逻辑没问题但是字符串转换和输出写复杂了

404.左叶子之和 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0404.%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.html

 

12 class Solution {
13 public:
14     int sumOfLeftLeaves(TreeNode* root) {
15         int sum=0;
16         if(root==nullptr) return 0;
17         getsum(root,sum);
18         return sum;
19     }
20     void getsum(TreeNode* root,int &sum)
21     {
22         if(root->left&&!root->left->left&&!root->left->right) 
23             sum+=root->left->val;
24         if(root->left) getsum(root->left,sum);
25         if(root->right) getsum(root->right,sum);
26         return;
27         
28 
29     }
30 };

没什么难度

精简版:

 1 class Solution {
 2 public:
 3     int sumOfLeftLeaves(TreeNode* root) {
 4         if (root == NULL) return 0;
 5         int leftValue = 0;
 6         if (root->left != NULL && root->left->left == NULL && root->left->right == NULL) {
 7             leftValue = root->left->val;
 8         }
 9         return leftValue + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
10     }
11 };

222.完全二叉树的节点个数(优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0222.%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%8A%82%E7%82%B9%E4%B8%AA%E6%95%B0.html

1 class Solution {
2 public:
3     int countNodes(TreeNode* root) {
4         if (root == NULL) return 0;
5         return 1 + countNodes(root->left) + countNodes(root->right);
6     }
7 };

 

 

标签:right,return,E5%,part03,int,二叉树,15,root,left
From: https://www.cnblogs.com/xzdmzrc221202/p/18337201

相关文章

  • 数据结构----树,二叉树,哈夫曼树相关概念及其实现
    树形结构概述1分层逻辑结构所谓的分层逻辑结构,也称为树形逻辑结构关系,是数据结构中的一种逻辑关系结构,在该逻辑结构关系中的数据元素之间满足一对多的逻辑结构关系:起始数据节点有且仅有一个,没有直接前驱,可以有多个直接后继;末尾数据节点可以多个,有且仅有一个直接前驱,......
  • 深圳软件测试15K一面,问的简单
    1、自我介绍2、请介绍一下最近做过的项目‍‍‍3、你认为这个项目中最难的业务流程是什么?4、说一下在工作中你认为最有成就感的事情是什么?5、你们的UI自动化是怎么做的?6、怎么保证UI自动化测试的稳定性‍7、接口自动化测试怎么做的?‍‍‍‍‍8、公司的系统有多个版本同......
  • 题解:CF1015D Walking Between Houses
    题解:CF1015DWalkingBetweenHouses算法模拟,分类讨论分析首先,设每步走的距离为\(t_i\),我们发现\(t_i\)应是满足\(1\let_i\len-1\)的。那么就很容易推出NO的情况:当\(s<k\)时,由于每一步都要至少走一个单位,所以\(k\)次步数肯定用不完,而题目要求恰好\(k\)次;当......
  • 【大厂笔试】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树
    检查两棵树是否相同100.相同的树-力扣(LeetCode)思路解透两个根节点一个为空一个不为空的话,这两棵树就一定不一样了若两个跟节点都为空,则这两棵树一样当两个节点都不为空时:若两个根节点的值不相同,则这两棵树不一样若两个跟节点的值相同,则对左右两棵子树进行递归......
  • 代码随想录day16 || 513 树左下角值,112 路径之和,116 中序后序遍历构造二叉树
    切片传递问题question:什么情况下传递切片,什么情况下传递切片指针,为什么有时候会修改原始副本,有时候又不会呢?typesli[]intfuncmain(){ slice:=[]int{1} fmt.Printf("slice:%p\n",slice) change1(slice) fmt.Println("=================================") s2:=......
  • Day16 二叉树Part4 常规递归和遍历法的综合应用(二叉树相关)
    目录任务112.路径总和思路113.路径总和II思路106.从中序与后序遍历序列构造二叉树思路105.从前序与中序遍历序列构造二叉树思路心得体会任务112.路径总和给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路......
  • P7215 [JOISC2020] 首都]
    P7215[JOISC2020]首都考虑对于颜色\(c_i\),若在此颜色集合内所有节点之间的路径上出现了其他颜色(如\(c_j\)),那我们则不得不将这两种颜色合并在一起,操作数加一。即对于颜色\(c_i\),若设其为首都,其答案(操作数)为所有颜色为\(c_i\)的节点之间的路径上的颜色种类......
  • L1-030 一帮一 分数 15
    //11'52"#include<iostream>#include<vector>usingnamespacestd;intmain(){intn;cin>>n;vector<pair<int,string>>qian;vector<pair<int,string>>hou;for(inti=1;i<=......
  • 1015 德才论
    宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给......
  • L1-016 查验身份证 分数 15
    小错不断,简直灾难//14'52"#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintarr[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};signedmain(){intn;cin>>n;map<int,char>map;map.insert({0,......