其他树

作者: Catherin_gao | 来源:发表于2020-07-21 23:14 被阅读0次

面试题 04.02. 最小高度树

1302. 层数最深叶子节点的和

方法一:递归

  • 需要一个变量记录树的最深depth。
  • 区分起始点:设置初始maxdep=-1。
  • maxdep 小于 depth,为每层第一个点。
class Solution {
    int total=0;
    int maxdep=-1;
public:
    void dfs(TreeNode* root, int depth){
        if(!root) return;
        if(depth>maxdep){
            maxdep=depth;
            total=root->val;
        }
        else if(depth ==maxdep){
            total+= root->val;
        }
        dfs(root->left,depth+1);
        dfs(root->right,depth+1);

    }
    int deepestLeavesSum(TreeNode* root) {
       dfs(root, 0);
       return total;
    }
};

方法二:队列

class Solution {
    int total=0;
    int maxdep=-1;
public:
    int deepestLeavesSum(TreeNode* root) {
       if(!root) return 0;
       queue<TreeNode*> q;
       q.push(root);
       int depth=0;
       while(q.size()>0){
           int n=q.size();
           for(int i=0;i<n;i++){
               TreeNode* temp=q.front();
               q.pop();
               if(depth>maxdep){
                   maxdep=depth;
                   total=temp->val;
               }
               else if(depth==maxdep)
               {
                   total+=temp->val;
               }
               if(temp->left) q.push(temp->left);
               if(temp->right) q.push(temp->right); 
           }
           depth++;
       }
       return total;
    }
};

方法三:还是队列

  • 但是不用判断目前深度和最大深度的关系。
class Solution {
public:
    Int deepestLeavesSum (TreeNode* root) {
       if(!root) return 0;
       queue<TreeNode*> q;
       q.push(root);
       int total=0;
       while(q.size()>0){
           int n=q.size();
           total=0;
           for(int i=0;i<n;i++){
               TreeNode* temp=q.front();
               q.pop();
               total+=temp->val;
               if(temp->left) q.push(temp->left);
               if(temp->right) q.push(temp->right); 
           }
       }
       return total;
    }
};

面试题 04.03. 特定深度节点链表

1315. 祖父节点值为偶数的节点和

方法一:递归

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
    int val=0;
public:
    void dfs(int grand,int parent ,TreeNode* node){
        if(!node) return;
        if(grand %2 ==0) val+=node->val;
        if(node->left) dfs(parent, node->val, node->left);
        if(node->right) dfs(parent, node->val, node->right);
    }
    int sumEvenGrandparent(TreeNode* root) {
      dfs(1,1,root);
      return val;
    }
};

方法二:队列

class Solution {
    int val=0;
public:
    int sumEvenGrandparent(TreeNode* root) {
        if(!root) return 0;
        queue<TreeNode*> q;
        q.push(root);
        while(q.size()){
            int n = q.size();
            for(int i=0;i<n;i++){
                TreeNode* temp=q.front();
                q.pop();
                if(temp->val %2 ==0){
                    if(temp->left){
                        if(temp->left->left)
                            val+=temp->left->left->val;
                        if(temp->left->right)
                            val+=temp->left->right->val;
                    }
                    if(temp->right){
                        if(temp->right->left)
                            val+=temp->right->left->val;
                        if(temp->right->right)
                        val+=temp->right->right->val;
                    }
                }
                if(temp->left) q.push(temp->left);
                if(temp->right) q.push(temp->right);
            }
        }
        return val;
    }
};

相关文章

  • 夫妻之间要共同成长!

    男人是树,女人是藤! 树长藤不长,树就会被其他藤缠绕; 藤长树不长,藤就会绕到其他树上去。 所以夫妻要双修,只有树...

  • 算法之树、其他算法

    在前面的二分查找示例中,每当用户登录Facebook时,Facebook都必须在一个庞大的数组中查找,核实其中是否...

  • 深入思考MySQL索引底层为什么用到B+树,为什么不用平衡树、红

    最近重新学习MySQL,发现自己一直知道MySQL索引用到了B+树,引发思考,为什么一定要是B+树,其他树或者其他...

  • 犹豫的树

    这是一棵犹豫的树。 树干没有像其他树一样垂直着长,就算不垂直,其他的树也不会长的弯弯曲曲,而它的树干呢...

  • 看不见的伤痛-两级反转

    我看这一棵树,一棵树也看着我,树是静止的,我的心也是静止的。一旦我的心有了其他的念头,树也会有其他的念头,它与我...

  • 第七章 渲染基础

    WebKit会将布局计算的结果保存到RenderObject树中,RenderObject和其他树(RenderL...

  • 210101图

    如果以一棵树的形象作为标准 其他所有的树都是畸形

  • 房树人第三期刻意练习高手营7/100第7次打卡张颖

    画者基本信息:女,16岁,学生,其他不详 绘画时间 :10分钟左右 绘画顺序 :主房,侧房,大门,树,其他房和树,...

  • 那棵恣意生长的树

    那是一棵孤单的树, 安静的与其他的树遥遥相望。 却又和其他的树保持着 相同的步调 发芽,长绿, 在秋天黄成一片金色...

  • 数据结构与算法之二叉树(六)

    目录 树形结构树的基本概念有序树,无序树,森林二叉树介绍其他二叉树 一 树形结构 生活中的二叉树 二 树(Tree...

网友评论

    本文标题:其他树

    本文链接:https://www.haomeiwen.com/subject/awuxlktx.html