package com.akfly;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Study {
static class Node {
Node left;
Node right;
Node parent;
int val;
public Node(Node parent, int val) {
this.parent = parent;
this.val = val;
}
public String toString() {
String s="Node [ val=" + val + "]";
// if(left!=null){
// s=s+"|left->"+left;
// }
// if(right!=null){
// s=s+"|right->"+right;
// }
return s;
}
}
public static Node build() {
Node n = new Node(null, 1);
Node n1 = new Node(n, 2);
n.left = n1;
Node n2 = new Node(n, 3);
n.right = n2;
Node n3 = new Node(n1, 4);
n1.left=n3;
Node n4 = new Node(n1, 5);
n1.right=n4;
return n;
}
public static Map<Integer, List<Node>> map = new HashMap<Integer, List<Study.Node>>();
public static void printLeft(Node node, Integer i) {
if (node == null) {
return;
}
if (map.containsKey(i)) {
List<Node> list=map.get(i);
list.add(node);
map.put(i, list);
}else{
List<Node> list=new ArrayList<Study.Node>();
list.add(node);
map.put(i, list);
}
int s=i+1;
if (node.left != null) {
printLeft(node.left, s);
}
if (node.right != null) {
printLeft(node.right, s);
}
return;
}
public static void main(String[] args) {
Node n=build();
printLeft(n, 0);
System.out.println(map);
}
}
输入一颗二元树,从上往下按层打印树的每个节点,同一层按照从左往右的顺序打印。
最新推荐文章于 2022-04-25 00:25:17 发布