ChatGPT 编写的 Rust 二叉树

作者: cnpim CNPIM 2023年06月09日

// 定义二叉树节点struct Node {  // 节点值  value: i32,  // 左子树  left: Option<Box<Node>>,  // 右子树  right: Option<Box<Node>>,}// 定义二叉树struct BinaryTree {  // 根节点  root: Option<Box<Node>>,}// 为二叉树实现插入节点的方法impl BinaryTree {  // 在二叉树中插入新的节点  fn insert(&mut self, value: i32) {    // 如果根节点为空,则新节点为根节点    if self.root.is_none() {      self.root = Some(Box::new(Node {        value,        left: None,        right: None,      }));      return;    }    // 否则,从根节点开始遍历二叉树    let mut current = self.root.as_mut().unwrap();    loop {      // 如果新值比当前节点的值小,则继续遍历左子树      if value < current.value {        if current.left.is_none() {          // 如果左子树为空,则新节点为左子节点          current.left = Some(Box::new(Node {            value,            left: None,            right: None,          }));          break;        }        current = current.left.as_mut().unwrap();      } else {        // 否则,继续遍历右子树        if current.right.is_none() {          // 如果右子树为空,则新节点为右子节点          current.right = Some(Box::new(Node {            value,            left: None,            right: None,          }));          break;        }        current = current.right.as_mut().unwrap();      }    }  }}// 测试二叉树插入节// 测试二叉树插入节点的方法fn main() {  let mut tree = BinaryTree { root: None };  // 插入 5、3、8、1、4、7、10 这些值  tree.insert(5);  tree.insert(3);  tree.insert(8);  tree.insert(1);  tree.insert(4);  tree.insert(7);  tree.insert(10);  // 检查插入后的二叉树是否正确  assert_eq!(tree.root.as_ref().unwrap().value, 5);  assert_eq!(tree.root.as_ref().unwrap().left.as_ref().unwrap().value, 3);  assert_eq!(tree.root.as_ref().unwrap().right.as_ref().unwrap().value, 8);  assert_eq!(tree.root.as_ref().unwrap().left.as_ref().unwrap().left.as_ref().unwrap().value, 1);  assert_eq!(tree.root.as_ref().unwrap().left.as_ref().unwrap().right.as_ref().unwrap().value, 4);  assert_eq!(tree.root.as_ref().unwrap().right.as_ref().unwrap().left.as_ref().unwrap().value, 7);  assert_eq!(tree.root.as_ref().unwrap().right.as_ref().unwrap().right.as_ref().unwrap().value, 10);}


本文阅读量:

声明:本信息来源于网络,仅用于学习和技术交流,如有侵权或其他问题,请联系本站处理。

技术支持:CNPIM.COM