小编Kil*_*uin的帖子

如何在 Rust 中编写二叉树的删除函数?

我正在尝试学习一些 Rust 并开始实现二叉树。虽然插入和有序遍历看起来很容易,但我在删除方法中的借用检查器方面遇到了一些麻烦。

到目前为止的代码是:

use std::cmp::{Ordering, PartialOrd};
use std::fmt::Display;

struct Node<T> {
    value: T,
    left: Option<Box<Node<T>>>,
    right: Option<Box<Node<T>>>,
}

impl<T: Display + PartialOrd> Node<T> {
    fn new(val: T) -> Self {
        Node {
            value: val,
            left: None,
            right: None,
        }
    }

    fn print_inorder(&self) {
        print!("[");
        self.inorder(|x| print!("{}, ", x));
        print!("]\n")
    }

    fn inorder(&self, f: fn(&T)) {
        if let Some(ref x) = self.left {
            (*x).inorder(f);
        }
        f(&self.value);
        if let Some(ref x) = self.right {
            (*x).inorder(f);
        }
    }

    fn insert(&mut self, val: …
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
1
解决办法
1197
查看次数

Haskell中的调试类型错误

我正在尝试编写一个函数,从Haskell中的列表返回所有排列:

perms :: [a] -> [[a]]
perms [] = [[]]
perms xs = map (\y -> concat_each y (perms (list_without y xs))) xs

list_without :: (Eq a) => a -> [a] -> [a]
list_without x xs =
    filter (\y -> not (y==x)) xs

concat_each :: a -> [[a]] -> [[a]]
concat_each x xs =
    map (\y -> x:y) xs
Run Code Online (Sandbox Code Playgroud)

我认为在第3行中会发生:y是a和x是[a],所以list_without y xs是[a].

因此,perms(list_without ...) [[a]]

所以concat_each Y(烫发...)获取a[[a]],导致[[a]]

所以地图的功能是a …

haskell

3
推荐指数
1
解决办法
83
查看次数

标签 统计

haskell ×1

rust ×1