解法一:
用数组假装链表

use std::io;

fn main() {
    let mut s = String::new();
    io::stdin().read_line(&mut s).expect("Failed To Read Line !");
    let mut v = vec![];
    let mut k = 0usize;
    let mut root = 0u32;
    let mut size = 0usize;
    for i in s.trim().split(" ") {
        match k {
            0 => size = i.parse::<usize>().unwrap(),
            1 => root = i.parse::<u32>().unwrap(),
            _ => v.push(i.parse::<u32>().unwrap()),
        }
        k += 1;
    }
    let mut list = Vec::with_capacity(size);
    list.push(root);
    let mut i = 0;
    while i < v.len() - 1 {
        for j in 0..list.len() {
            if v[i + 1] == list[j] {
                list.insert(j + 1, v[i]);
                break;
            }
        }
        i += 2;
    }
    root = v[i];
    list.retain(|&x| x != root);
    if list.len() > 0 {
        for i in list.iter() {
            print!("{} ", *i);
        }
    }
}

解法二:
构造链表来解

wait my code