力扣树相关题目

145.二叉树的后序遍历

/**
 * 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 houxu(TreeNode*root,vector<int>&res){//这里注意是&不是*
    if(root==nullptr) return;
    houxu(root->left,res);
    houxu(root->right,res);
    res.push_back(root->val);
}
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> res;
        houxu(root,res);
        return res;

    }
};

剑指 Offer 32 - III 从上到下打印二叉树 III

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> res;
        if (root == nullptr)
        {
            return res;
        }
        queue<TreeNode*> q;
        q.push(root);

        while (!q.empty())
        {
            vector<int> currs;
            for (int i = q.size() - 1; i >= 0; --i)
            {
                TreeNode* curr = q.front();
                q.pop();
                currs.push_back(curr->val);
                if (curr->left)
                {
                    q.push(curr->left);
                }
                if (curr->right)
                {
                    q.push(curr->right);
                }
            }
            // 当前res.size()为偶数时无需翻转,否则要翻转
            if (res.size() & 1)//i & 1 可以判断 i 奇偶 ,i & 1 == 0 偶数
            {
                reverse(currs.begin(), currs.end());//reverse()反转vector
            }
            res.push_back(currs);
        }

        return res;
    }
};

面试题55 - I. 二叉树的深度

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root: return 0#这里ruturn的是0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
        #这个+1导致return的结果能是它的遍历深度

剑指 Offer 28. 对称的二叉树

class Solution: 
    def isSymmetric(self, root: TreeNode) -> bool:
        def recur(l,r):
            if not l and not r:return True
            if not l or not r or l.val!=r.val:return False#复合l和r之间有一个有值,或者都有值但是值不相等
            return recur(l.left,r.right) and recur(l.right,r.left)
        return recur(root.left,root.right) if root else True

剑指 Offer 26. 树的子结构

class Solution:
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        if not A or not B:return False
        def recur(a,b):
            if not b:#b遍历完了,为正
                return True
            if not a or a.val!=b.val:#a遍历完了b没有或者val不相同,为False
                return False
            return recur(a.right,b.right) and recur(a.left,b.left)

        return recur(A,B) or self.isSubStructure(A.left,B) or self.isSubStructure(A.right,B)

双重递归题:A与B的可能性:1.A和B在根节点重recur(A,B)为True 2.B是A的子节点子结构 3.B是A的右节点子结构
如果AB为空树,返回False.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值