gpt4 book ai didi

rust - 如何读取和修改链接树中节点的值?

转载 作者:行者123 更新时间:2023-12-03 11:43:13 24 4
gpt4 key购买 nike

我正在努力在Rust中实现树结构。
特别是,获取和修改节点的值。运用值(value)的惯用方式是什么?
注意:实现是给定的,不能更改。

use std::rc::Rc;
use std::cell::RefCell;

// Definition for a binary tree node.
#[derive(Debug, PartialEq, Eq)]
pub struct TreeNode {
pub val: i32,
pub left: Option<Rc<RefCell<TreeNode>>>,
pub right: Option<Rc<RefCell<TreeNode>>>,
}

impl TreeNode {
#[inline]
pub fn new(val: i32) -> Self {
TreeNode {
val,
left: None,
right: None
}
}
}

fn main() {
let mut root = Some(Rc::new(RefCell::new(TreeNode::new(1))));
println!("{:?}", root.unwrap().borrow().val); // cannot infer type for type parameter `Borrowed`
root.unwrap().get_mut().val = 2; // cannot borrow data in an `Rc` as mutable
}

最佳答案

let root = Some(Rc::new(RefCell::new(TreeNode::new(1))));
let mut v = RefCell::borrow(root.as_ref().unwrap()).val) // Too verbose, but I do not know a brief way.
println!("{}", v); // 1
root.as_ref().unwrap().borrow_mut().val += 1;
v = RefCell::borrow(root.as_ref().unwrap()).val)
println!("{}", v); // 2

关于rust - 如何读取和修改链接树中节点的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61665203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com