静为躁君


私信TA

用户名:1833746144

访问量:570

签 名:

1833746144

等  级
排  名 14523
经  验 823
参赛次数 1
文章发表 2
年  龄 19
在职情况 学生
学  校 吉林大学
专  业 计算机科学与技术

  自我简介:

努力学习中。

TA的其他文章

Java优质实现
浏览:119

解题思路:

注意事项:居然是两次中根遍历,笑掉我的大牙

参考代码:

import java.util.LinkedList;
import java.util.Scanner;
class TreeNode{
   public char val;
   public TreeNode left;
   public TreeNode right;

   public TreeNode(char val) {
       this.val = val;
   }
}
public class Main {
   public static LinkedList<Character> characters = new LinkedList<>();
   public static LinkedList<Character> firstRoot=new LinkedList<>();
   public static LinkedList<Character> midRoot=new LinkedList<>();
   public static LinkedList<Character> lastRoot=new LinkedList<>();
   public static void main(String[] args) {
       //1.读入输入,转成字符数组,存入list里操作方便
       //2.实现二叉树创建函数
       //3.实现三种遍历方式
       Scanner scanner = new Scanner(System.in);
       String s = scanner.nextLine();
       char[] chars = s.toCharArray();
       for (int i = 0; i < chars.length; i++) {
           characters.add(chars[i]);
       }
       TreeNode tree = createTree();
       firstRootTra(tree);
       midRootTra(tree);
       lastRootTra(tree);
       String s1="";
       String s2="";
       String s3="";
       for (int i = 0; i < firstRoot.size(); i++) {
           s1=s1+firstRoot.get(i)+" ";
           s2=s2+midRoot.get(i)+" ";
           s3=s3+lastRoot.get(i)+" ";
       }
       System.out.println(s1);
       System.out.println(s2);
       System.out.println(s2);
   }
   public static TreeNode createTree(){
       if(characters.size()==0){
           return null;
       }
       Character first = characters.getFirst();
       characters.removeFirst();
       if(first==' '){
           return null;
       }
       TreeNode root=new TreeNode(first);//创建根
       root.left=createTree();//创建左子树
       root.right=createTree();//创建右子树
       return root;
   }
   public static void firstRootTra(TreeNode treeNode){
       if(treeNode==null){
           return;
       }
       //对于根节点
       firstRoot.add(treeNode.val);
       firstRootTra(treeNode.left);
       firstRootTra(treeNode.right);
   }
   public static void midRootTra(TreeNode treeNode){
       if(treeNode==null){
           return;
       }
       midRootTra(treeNode.left);
       midRoot.add(treeNode.val);
       midRootTra(treeNode.right);
   }
   public static void lastRootTra(TreeNode treeNode){
       if(treeNode==null){
           return;
       }
       lastRootTra(treeNode.left);
       lastRootTra(treeNode.right);
       lastRoot.add(treeNode.val);
   }
}

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区