首页 > 其他分享 >CS61A_hw09

CS61A_hw09

时间:2023-04-22 20:22:46浏览次数:42  
标签:hw09 Tree value traversal Link link CS61A ptr

 

def mutate_reverse(link):
    """Mutates the Link so that its elements are reversed.
    >>> link = Link(1)
    >>> mutate_reverse(link)
    >>> link
    Link(1)
    >>> link = Link(1, Link(2, Link(3)))
    >>> mutate_reverse(link)
    >>> link
    Link(3, Link(2, Link(1)))
    """
    "*** YOUR CODE HERE ***"
    value = []
    ptr = link
    while ptr is not Link.empty:
        value.append(ptr.first)
        ptr = ptr.rest
    ptr = link
    while ptr is not Link.empty:
        ptr.first = value.pop()
        ptr = ptr.rest

 

在 `mutate_reverse` 函数中,`ptr` 是一个变量,用于追踪当前操作的 `Link` 实例。在函数开始时,`ptr` 被初始化为输入的 `link` 参数,也就是指向链表的第一个节点。之后,`ptr` 会在循环中依次指向链表的下一个节点。

因此,`ptr` 并不等于 `link`,它只是一个指向 `link` 中某个节点的引用变量。在函数的第二个循环中,`ptr.first` 会被更新为 `value` 列表中的值,但这并不会改变 `link` 变量本身的值,因为 `ptr` 只是指向了 `link` 的一个节点。但由于 `link` 中的节点对象是可变的,因此函数可以通过修改这些节点的 `first` 属性来实现链表的反转。

 

 

def in_order_traversal(t):
    """
    Generator function that generates an "in-order" traversal, in which we
    yield the value of every node in order from left to right, assuming that each node has either 0 or 2 branches.
    For example, take the following tree t:
            1
        2       3
    4     5
         6  7
    We have the in-order-traversal 4, 2, 6, 5, 7, 1, 3
    >>> t = Tree(1, [Tree(2, [Tree(4), Tree(5, [Tree(6), Tree(7)])]), Tree(3)])
    >>> list(in_order_traversal(t))
    [4, 2, 6, 5, 7, 1, 3]
    """
    "*** YOUR CODE HERE ***"
    ans = []
    def traversal(t):
        if t.is_leaf():
            ans.append(t.label)
            return
        traversal(t.branches[0])
        ans.append(t.label)
        traversal(t.branches[1])
    traversal(t)
    return ans

 

标签:hw09,Tree,value,traversal,Link,link,CS61A,ptr
From: https://www.cnblogs.com/xuenima/p/17343630.html

相关文章

  • CS61A_lab14_macro
     (define-macro(switchexprcases)(cons'cond(map(lambda(case)(cons(eq?(evalexpr)(carcase))(cdrcase)))cases))) 这段代码是一个用于Scheme语言的宏定义,可以将一系列的条件分支语句转化为Scheme的cond表达式。下面是具体的......
  • CS61A_lab12_macro
     (define-macro(deffuncargsbody)`(define,(consfuncargs),body))分析:定义一个万能的函数定义,那就要模拟函数定义的样子。ok,函数定义是什么样子的呢?eg:(define(filter-lstfnlst)(if(null?lst)nil(if(fn(carlst))(cons(carlst)(fi......
  • CS61A_hw07
     #langsicp(define(uniques)(if(null?s)nil(cons(cars)(unique(filter(lambfa(x)(not(eq?x(cars))))(cdrs))))))这是一个Scheme函数,名......
  • CS61A_lab08
    题目:Writethegeneratorfunction make_generators_generator,whichtakesazero-argumentgeneratorfunction g andreturnsageneratorthatyieldsgenerators.Foreachelement e yieldedbythegeneratorobjectreturnedbycalling g,anewgeneratorobjec......
  • CS61A_lab_07
    Problem2题目描述:代码:1definc_subseqs(s):2"""AssumingthatSisalist,returnanestedlistofallsubsequences3ofS(alistoflists)forwhichtheelementsofthesubsequence4arestrictlynondecreasing.Thesubseq......
  • CS61A_HW04
    Q6题目描述:Writeafunction has_path thattakesinatree t andastring phrase.Itreturns True ifthereisapaththatstartsfromtherootwherethe......
  • CS61A Fall 2020 Homework 2 Recursion 我的思路
    HW2Description:https://inst.eecs.berkeley.edu/~cs61a/fa20/hw/hw02/我会把题目倒着放,因为通常后面的题能带给我的思考更多(也更可能做不出来......
  • CS61A_Lab_05
    Q1题目描述:代码实现:1defcoords(fn,seq,lower,upper):2"""3>>>seq=[-4,-2,0,1,3]4>>>fn=lambdax:x**25>>>coords(fn,......
  • CS61A_lab02
    1defcycle(f1,f2,f3):2"""Returnsafunctionthatisitselfahigher-orderfunction.34>>>defadd1(x):5...returnx+16......
  • cs61abc分享会(六)程序的输入输出详解 - 标准输入输出,文件,设备,EOF,命令行参数
    系列文章目录分享会链接2022年7月23日分享会长期链接:https://meeting.tencent.com/dm/Qet4sVXmOccd分享时间:9点20到9点50视频录播在最下方文章目录​​系列文章目录​​​......