// 定义二叉树节点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);}