You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中Adventure结构体如何实现二叉树构建?

拆解Adventure结构体如何构建二叉树

嘿,我来帮你捋明白这个问题!你困惑的点在于:明明教程说这段代码是构建二叉树(每个Page关联两个子Page),但看不出Adventure结构体是怎么做到的对吧?咱们一步步拆解:

首先,先补全你没贴完的代码(这类交互式故事二叉树的常规写法),然后再解释逻辑:

import Foundation

// 先补全缺失的Story基础类型
struct Story {
    let text: String
}

class Page {
    let story: Story
    // Choice是一个元组,包含选项标题和对应的下一个Page
    typealias Choice = (title: String, nextPage: Page)
    
    // 每个Page最多两个选项,对应二叉树的左右两个子节点
    let choices: [Choice]
    
    init(story: Story, choices: [Choice]) {
        self.story = story
        self.choices = choices
    }
}

// 这是Adventure结构体的典型实现
struct Adventure {
    // 持有整个二叉树的根节点(冒险的起始页)
    let rootPage: Page
    
    // 初始化方法就是用来组装整个二叉树的地方
    init() {
        // 1. 先创建最底层的「叶子节点」——没有子页面的结局页
        let happyEnding = Page(story: Story(text: "你找到了宝藏,过上了富足的生活!"), choices: [])
        let badEnding = Page(story: Story(text: "你掉进了陷阱,探险结束。"), choices: [])
        
        // 2. 创建中间节点:每个节点的choices对应两个子Page,形成二叉分支
        let caveJunctionPage = Page(
            story: Story(text: "你来到洞穴入口:左边是发光通道,右边是黑暗隧道。"),
            choices: [
                ("走左边发光通道", happyEnding),
                ("走右边黑暗隧道", badEnding)
            ]
        )
        
        // 3. 创建根节点(冒险的起点)
        let startPage = Page(
            story: Story(text: "你站在森林边缘,前方有一条通往洞穴的路。"),
            choices: [("前往洞穴", caveJunctionPage)]
            // 如果是严格二叉树,这里可以再加第二个选项,比如("原路返回", anotherPage)
        )
        
        // 把根节点赋值给Adventure,整个二叉树就构建完成了
        self.rootPage = startPage
    }
}

核心逻辑对应关系

  • 二叉树节点 = Page类:每个Page就是二叉树里的一个节点,存储自己的内容(story)。
  • 二叉树的分支 = Page的choices:每个Page的choices数组里的两个元素(严格二叉树会固定两个),分别对应二叉树的左子节点和右子节点——通过nextPage引用关联起来。
  • Adventure的作用 = 二叉树的构建器:它本身不实现二叉树的算法逻辑,而是负责从下到上组装所有Page节点,最后持有整个树的根节点(rootPage),这样整个二叉树的结构就通过Page之间的引用串起来了。

举个直观的结构例子:

startPage(森林边缘)
  └─ caveJunctionPage(洞穴入口)
      ├─ happyEnding(宝藏结局)
      └─ badEnding(陷阱结局)

这样整个结构就是一个二叉树啦——每个中间节点最多有两个子节点,完美对应你说的“一个Page关联两个Page”的需求。

内容的提问来源于stack exchange,提问作者Curt Rand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:14:28