zoukankan      html  css  js  c++  java
  • 剑指OFFER(百度笔试)——二叉树的子结构

    百度软件开发实习生笔试:

    1.模拟短作业优先调度算法,计算平均等待时间,例如输入[0,2,4,8]表示四个作业分别是第0s到、第2s到、第4s到、第8s到。[2,1,6,3]表示四个作业的运行时间。

    计算平均等待时间。每个作业的等待时间:实际开始时间-到达时间。(不可剥夺)

    2.二叉树的子结构,输入两棵树A、B,判断B是不是A的子树。

    3.第三道题记不得了。貌似也是操作系统的。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     二叉树的子结构:

    最近可以总结一下关于树的算法题了。

    子树问题就是,判断一棵树是不是另一棵树的子树。经常出现各大公司的笔试题中。

    其实,树(二叉树)的很多问题都可以用递归解决。因为结构是一样的嘛。

    struct TreeNode
    {
        int val;
        TreeNode *next;
        TreeNode(int v) : val(v), next(NULL) {}
    };

    定义了一个isSame的函数,判断两棵树是不是一模一样的二叉树。其实如果要一棵树T2是另一棵树T1的子结构,一定是有一部分他们是一模一样的,可能T1没到叶节点,但是T2必须要判断到叶节点。

    因此isSame的出口条件是T2==NULL&&T1!=NULL(是子树),T2!=NULL&&T1==NULL(不是子树)。

        bool isPart(TreeNode* pRoot1, TreeNode* pRoot2) {
            if (pRoot2 == NULL)
                return true;
            if (pRoot1 == NULL)
                return false;
            if (pRoot1->val == pRoot2->val)
                return isPart(pRoot1->left, pRoot2->left) && isPart(pRoot1->right, pRoot2->right);
            else return false;
        }

    只是从哪里开始一模一样,需要判断的。

    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
    
            if (pRoot2 == NULL || pRoot1 == NULL)
                return false;
            bool result = false;
            if (pRoot1->val == pRoot2->val)
                result = isPart(pRoot1, pRoot2);
            if (result == false)
                return HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
            else return result;
    
        }
  • 相关阅读:
    [转] Linux下crontab命令的用法
    [转] Try to use one var statement per scope in JavaScript
    [转] 主流JS框架中DOMReady事件的实现
    MySQL 表复制语句
    [转] MySQL中的运算符展示
    [转] mysql分组取每组前几条记录(排名)
    MySQL 连接结果集
    [转] mysql show processlist命令 详解
    [转] mysql 5.0存储过程学习总结
    jquery中使用event.target的几点
  • 原文地址:https://www.cnblogs.com/LUO77/p/5440230.html
Copyright © 2011-2022 走看看