• LeetCode二叉树Java模板


    public class TreeNode {
    	int val;
    	TreeNode left;
    	TreeNode right;
    
    	TreeNode(int x) {
    		val = x;
    	}
    }
    
    import java.util.LinkedList;
    import java.util.Queue;
    
    public class Wrapper {
    	public static String treeNodeToString(TreeNode root) {
    		if (root == null) {
    			return "[]";
    		}
    
    		String output = "";
    		Queue<TreeNode> nodeQueue = new LinkedList<>();
    		nodeQueue.add(root);
    		while (!nodeQueue.isEmpty()) {
    			TreeNode node = nodeQueue.remove();
    
    			if (node == null) {
    				output += "null, ";
    				continue;
    			}
    
    			output += String.valueOf(node.val) + ", ";
    			nodeQueue.add(node.left);
    			nodeQueue.add(node.right);
    		}
    		return "[" + output.substring(0, output.length() - 2) + "]";
    	}
    
    	public static TreeNode stringToTreeNode(String input) {
    		input = input.trim();
    		input = input.substring(1, input.length() - 1);
    		if (input.length() == 0) {
    			return null;
    		}
    
    		String[] parts = input.split(",");
    		String item = parts[0];
    		TreeNode root = new TreeNode(Integer.parseInt(item));
    		Queue<TreeNode> nodeQueue = new LinkedList<>();
    		nodeQueue.add(root);
    
    		int index = 1;
    		while (!nodeQueue.isEmpty()) {
    			TreeNode node = nodeQueue.remove();
    
    			if (index == parts.length) {
    				break;
    			}
    
    			item = parts[index++];
    			item = item.trim();
    			if (!item.equals("null")) {
    				int leftNumber = Integer.parseInt(item);
    				node.left = new TreeNode(leftNumber);
    				nodeQueue.add(node.left);
    			}
    
    			if (index == parts.length) {
    				break;
    			}
    
    			item = parts[index++];
    			item = item.trim();
    			if (!item.equals("null")) {
    				int rightNumber = Integer.parseInt(item);
    				node.right = new TreeNode(rightNumber);
    				nodeQueue.add(node.right);
    			}
    		}
    		return root;
    	}
    
    	public static void prettyPrintTree(	TreeNode node,
    										String prefix,
    										boolean isLeft) {
    		if (node == null) {
    			System.out.println("Empty tree");
    			return;
    		}
    
    		if (node.right != null) {
    			prettyPrintTree(node.right, prefix + (isLeft ? "│   " : "    "),
    					false);
    		}
    
    		System.out.println(prefix + (isLeft ? "└── " : "┌── ") + node.val);
    
    		if (node.left != null) {
    			prettyPrintTree(node.left, prefix + (isLeft ? "    " : "│   "), true);
    		}
    	}
    
    	public static void prettyPrintTree(TreeNode node) {
    		prettyPrintTree(node, "", true);
    	}
    }
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class MainClass {
    	public static void main(String[] args) throws IOException {
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    		String line;
    		while ((line = in.readLine()) != null) {
    			TreeNode root = Wrapper.stringToTreeNode(line);
    			Wrapper.prettyPrintTree(root);
    		}
    	}
    }
    
  • 相关阅读:
    深拷贝(deep clone)与浅拷贝(shallow clone)
    wait和notify
    Java实现简单RPC框架(转)
    Eclipse 搭建Struts2
    手写HashMap实践
    JVM 类加载器ClassLoader源码学习笔记
    Java 内存模型学习笔记
    Struts2 入门笔记
    struts2 拦截器
    Btrace 拦截时机
  • 原文地址:https://www.cnblogs.com/wowpH/p/11687386.html
Copyright © 2020-2023  润新知