zoukankan      html  css  js  c++  java
  • 【刷题-考研上机模拟】树专题、概念专题解题更新

    更新:

    (B题)判断两棵树是否相同时,也可以用中序序列+另一序列是否相同判断,本题中中序序列一定相同,只用比较另一个序列是否相同

    概念专题

    (D题)
    1. 判断是否为bst时,可以直接中序遍历得到中序序列,如果中序序列是否有序(中序序列有序的树一定是bst,无序一定不是,具有一一对应的判定关系)

    //lastValue初始为-1
    bool isbst(int idx, int lastValue) {
        if(idx == -1) return true;                          // 空树是BST
        return checkBST(node[idx].left, lastValue)          // 判断左子树是否是BST
               && node[idx].K > lastValue                   // 当前结点的K值比中序遍历过程中上一个结点的K值大
               && checkBST(node[idx].right, node[idx].K);   // 判断右子树是否是BST(对右子树来说lastValue是当前结点的K值)
    

    2. 判断是否为堆,本质为后序遍历,子树都是堆并且根节点值最大时,树是堆。参考代码中用一个checkMaxHeap变量减小了一半的代码量

    // 比较node[root].V是否大于或小于node[subNode].V
    bool compareV(int root, int subNode, bool checkMaxHeap) {
        if(subNode == -1) return true;                                  // subNode为空时总是满足,以使其不影响checkHeap的结果
        else if(checkMaxHeap) return node[root].V > node[subNode].V;    // 检查大根堆时判断root的V是否大于subNode的V
        else return node[root].V < node[subNode].V;                     // 检查小根堆时判断root的V是否小于subNode的V
    }
    // 检查是否是堆,本质是后序遍历,其中idx为当前字数的根节点编号,checkMaxHeap当检查大(小)根堆时为true(false)
    bool checkHeap(int idx, bool checkMaxHeap) {
        if(idx == -1) return true;                                  // 空树是堆
        return checkHeap(node[idx].left, checkMaxHeap)              // 判断左子树是否是堆
               && checkHeap(node[idx].right, checkMaxHeap)          // 判断右子树是否是堆
               && compareV(idx, node[idx].left, checkMaxHeap)       // 当前结点的V值比左子树的最大(小)值大(小)
               && compareV(idx, node[idx].right, checkMaxHeap);     // 当前结点的V值比由子树的最大(小)值大(小)
    }
    

    参考:
    2019 浙大计算机考研机试模拟赛(1)——树专题 解题报告
    2019 浙大计算机考研机试模拟赛(2) 概念专题解题报告

  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/vinnson/p/10845008.html
Copyright © 2011-2022 走看看