首页 > 其他分享 >day12打卡

day12打卡

时间:2024-08-30 21:15:55浏览次数:13  
标签:right TreeNode int nullptr day12 打卡 root left

平衡二叉树

class Solution
{
public:
int getheight(TreeNode *root)
{
if(root == nullptr)
{
return 0;
}
int left = getheight(root->left);
int right = getheight(root->right);
return 1+max(left, right);
}
bool isBalanced(TreeNode *root)
{
if(root == nullptr)
{
return true;
}
bool l = isBalanced(root->left);
bool r = isBalanced(root->right);
int left = getheight(root->left);
int right = getheight(root->right);
if(abs(left-right) <= 1 && l && r)
{
return true;
}
else
{
return false;
}

}

};

二叉树所有的路径

没有想明白终止条件到空结点为啥不行
/**

  • Definition for a binary tree node.
  • struct TreeNode {
  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    
  • };
    */
    class Solution
    {
    public:
    void traversal(TreeNode root, vector &path, vector &ret)
    {
    path.push_back(root->val);
    if(root->left == nullptr && root->right == nullptr)
    {
    string str;
    for(int i = 0; i < path.size() - 1; ++i)
    {
    str += to_string(path[i]);
    str += "->";
    }
    str += to_string(path[path.size()-1]);
    ret.push_back(str);
    }
    if(root->left)
    {
    traversal(root->left, path, ret);
    path.pop_back();
    }
    if(root->right)
    {
    traversal(root->right, path, ret);
    path.pop_back();
    }
    }
    vector binaryTreePaths(TreeNode
    root)
    {
    vector path;
    vector ret;
    if(root == nullptr)
    {
    return ret;
    }
    traversal(root, path, ret);
    return ret;
    }
    };

左叶子之和

class Solution
{
public:
int traversal(TreeNode *root)
{
int left = 0;
int right = 0;
if(root == nullptr)
{
return 0;
}
if(root->left == nullptr && root->right == nullptr)
{
return 0;
}
left = traversal(root->left);
if(root->left)
{
if(root->left->left == nullptr && root->left->right == nullptr)
{
left = root->left->val;
}

    }
    if(root->right)
    {
        right = traversal(root->right);
    }
    return left + right;
}
int sumOfLeftLeaves(TreeNode* root)
{
    if(root == nullptr)
    {
        return 0;
    }
    return traversal(root);
}

};

完全二叉树的结点个数
class Solution
{
public:
int countNodes(TreeNode *root)
{
if(root == nullptr)
{
return 0;
}
int left = countNodes(root->left);
int right = countNodes(root->right);
return 1+left+right;
}
};

标签:right,TreeNode,int,nullptr,day12,打卡,root,left
From: https://www.cnblogs.com/pwangikun/p/18389503

相关文章

  • day11打卡
    翻转二叉树classSolution{public:voidtraversal(TreeNoderoot){if(root==nullptr){return;}traversal(root->left);traversal(root->right);TreeNodetmp=root->left;root->left=root->right;root->right=tmp;}TreeNodeinvertTree(T......
  • day9打卡
    用栈实现队列classMyQueue{public:MyQueue(){}voidpush(intx){stIn.push(x);}intpop(){inta;while(!stIn.empty()){a=stIn.top();stIn.pop();stOut.push(a);}a=stOut.top();stOut.pop();while(!stOut.empty()){intb=stOut.top();stOut.pop();......
  • day8打卡
    反转字符串中的单词classSolution{public:stringreverseWords(strings){intslow=0;inti=0;while(i<s.size()){if(s[i]!=''){if(slow!=0){s[slow++]='';}while(i<s.size()&&s[i]!=''){s[slow+......
  • day7打卡
    反转字符串利用双指针不断向中间靠拢,交换数据classSolution{public:voidreverseString(vector&s){intleft=0;intright=s.size()-1;while(left<right){chartmp='\0';tmp=s[left];s[left++]=s[right];s[right--]=tmp;}}};反转字符串II......
  • 代码随想录训练营 Day42打卡 动态规划 part09 188.买卖股票的最佳时机IV 309. 最佳买
    代码随想录训练营Day42打卡动态规划part09一、力扣188.买卖股票的最佳时机IV给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次......
  • Datawhale X 李宏毅苹果书AI夏令营 Task1打卡
    3.1局部极小值与鞍点3.1.1临界点及其分类参数对于损失函数的微分为零时,就无法进一步优化了,训练即停止了。所以我们把这些梯度为零的点统称为临界点。临界点可以分为两类:极值点(局部极小值)和鞍点。鞍点就是指那些梯度为零但不是局部极小值或者局部极大值的点,因为其在损失......
  • 企业微信如何远程打卡,免费
    现在一些定位软件不好用或者要收费,那么如何能够很好的免费实现远程打开呢?首先需要一个不用的旧手机,一直放在公司里,然后拿自己常用手机远程操作来实现,具体步骤如下:旧手机需要打开开发者模式,然后打开屏幕常亮保证不会锁屏;公司电脑下载scrcpy用来操作连接的旧手机;下载地址......
  • apk机器(手机,打卡机,录像机)连接电脑 常用adb操作命令
    adb简介adb的全称为AndroidDebugBridge,就是起到调试桥的作用。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。借助adb工具,我们可以管理设备的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android与PC......
  • 【题解】Solution Set - NOIP2024集训Day12 树上启发式合并
    【题解】SolutionSet-NOIP2024集训Day12树上启发式合并https://www.becoder.com.cn/contest/5472「CF600E」Lomsatgelral直接dsuontree。记录每一个颜色的出现次数。「IOI2011」Race之前是用点分治做的。考虑dsuontree。每个子树内维护到根节点的距离为\(x\)......
  • day6打卡
    四数相加classSolution{public:intfourSumCount(vector&nums1,vector&nums2,vector&nums3,vector&nums4){unordered_map<int,int>umap;for(intnum1:nums1){for(intnum2:nums2){umap[num1+num2]++;}}intcount=0;for(int......