首页 > 其他分享 >sicp每日一题[2.66]

sicp每日一题[2.66]

时间:2024-11-02 11:31:14浏览次数:1  
标签:given set 2.66 每日 sicp records lookup key root

Exercise 2.66

Implement the lookup procedure for the case where the set of records is structured as a binary tree, ordered by the numerical values of the keys.


这道题还是挺简单的,由于是有序的二叉树,所以可以先比较根与要查找的数字的大小,如果相等就查到了;如果根小于要查找的数,则递归调用判断右子树中是否包含这个数; 如果根大于要查找的数,则去左子树去查即可。

(define (lookup given-key set-of-records)
  (if (null? set-of-records)
      false
      (let ((root (entry set-of-records)))
        (cond ((= given-key root) true)
              ((< given-key root) (lookup given-key (left-branch set-of-records)))
              (else (lookup given-key (right-branch set-of-records)))))))


(define test (list->tree (list 1 2 3 4 5 6 7 8 9)))
(lookup 7 test)
(lookup 10 test)

; 结果如下
#t
#f

标签:given,set,2.66,每日,sicp,records,lookup,key,root
From: https://www.cnblogs.com/think2times/p/18521737

相关文章

  • 2024-11-1-leetcode每日一题-3259. 超级饮料的最大强化能量
    题目描述来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表A、B两种不同能量饮料每小时所能提供的强化能量。你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到另一种,你......
  • 10.31每日总结:《程序员修炼之道》读后感3
    读完《程序员修炼之道:从小工到专家》,我对编程这一职业有了更深刻的认识。这本书强调了程序员应具备的各种品质和技能。它提醒我们要注重代码的可读性和可维护性,这不仅利于自己日后对代码的修改,也方便团队中的其他成员理解和协作。就像建造一座坚固的大厦,清晰的代码结构是坚实的基......
  • 每日计划-1031
    1. 完成160.相交链表/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*getIntersectionNode(ListNode*head......
  • 每日python小白:如何打印九九乘法表?
    一、代码展示以防各位心急,咱先搬上来代码:代码一:初级版foriinrange(1,10):forjinrange(1,10):print("%d*%d=%d"%(i,j,i*j),end="")print()效果:代码二:完整版foriinrange(1,10):forjinrange(1,i+1):print("%d*%d=%d"......
  • GitHub每日最火火火项目(10.31)
    open-mmlab/Amphion:“open-mmlab/Amphion”是一个专注于音频、音乐和语音生成的工具包。其发音为/æm’fɑːrən/。这个项目旨在支持可重复的研究,并帮助初级研究人员和工程师在音频、音乐和语音生成的研究与开发领域迈出第一步。在当今数字化时代,音频技术在音乐制作、语......
  • 每日算法一练:剑指offer——数组篇(7)
    1.文物朝代确认        展览馆展出来自13个朝代的文物,每排展柜展出5个文物。某排文物的摆放情况记录于数组 places,其中 places[i] 表示处于第 i 位文物的所属朝代编号。其中,编号为0的朝代表示未知朝代。请判断并返回这排文物的所属朝代编号是否能够视为连......
  • 10.29每日一题
    别问我为什么这么现在才写10.29的题10.29每日一题很简单的一道动态规划题,没什么好解释的。但是鄙人此前未接触过动态规划,所以在看出来是动态规划题后想着有没有别的办法。很自然的想到能否从数学上找到通解。将题意抽象一下,要求大致为对于一个大小为n的数组,为没一个下标位置......
  • Leetcode每日一题 3216. 交换后字典序最小的字符串
    Leetcode每日一题##3216.交换后字典序最小的字符串###C++给你一个仅由数字组成的字符串s,在最多交换一次相邻且具有相同奇偶性的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5和9、2和4奇偶性相同,而......
  • 2024-10-31每日一题
    连续自然数和题目描述对一个给定的正整数\(M\),求出所有的连续的正整数段(每一段至少有两个数),这些连续的自然数段中的全部数之和为\(M\)。例子:\(1998+1999+2000+2001+2002=10000\),所以从\(1998\)到\(2002\)的一个自然数段为\(M=10000\)的一个解。输入格式包含一个整......
  • sicp每日一题[2.63-2.64]
    Exercise2.63Eachofthefollowingtwoproceduresconvertsabinarytreetoalist.(define(tree->list-1tree)(if(null?tree)'()(append(tree->list-1(left-branchtree))(cons(entrytree)......