首先是树类
public class ListNode {
int val;
ListNode next;
public ListNode(){}
public ListNode(int val){
this.val=val;
}
public ListNode(int val ,ListNode next){
this.val=val;
this.next=next;
}
public void setNext(ListNode next){
this.next=next;
}
}
中序遍历
public void inorder(TreeNode root,LinkedList<Integer> list){
if(root==null) return;
inorder(root.left,list);
list.add(root.val);
inorder(root.right, list);
}
先序遍历
public void preord(TreeNode root,LinkedList<Integer> list){
if(root==null) return;
list.add(root.val);
inorder(root.left,list);
inorder(root.right, list);
}
后序遍历
public void postorder(TreeNode root,LinkedList<Integer> list){
if(root==null) return;
inorder(root.left,list);
inorder(root.right, list);
list.add(root.val);
}
bfs(广度优先)
public static void bfs(TreeNode root,List list){
Queue<TreeNode> queue=new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node=queue.poll();
list.add(node.val);
if(node.left!=null) queue.offer(node.left);
if(node.right!=null) queue.offer(node.right);
}
}
dfs(深度优先)
public static void dfs(TreeNode root,List list){
if(isLeafNode(root)){
list.add(root.val);
return;
}
list.add(root.val);
if(root.left!=null) dfs(root.left,list);
if(root.right!=null) dfs(root.right,list);
}
public static boolean isLeafNode(TreeNode node){
return node.right==null && node.left==null;
}
测试用例
public static void main(String[] args) {
TreeNode node1=new TreeNode(1);
TreeNode node2=new TreeNode(2);
TreeNode node3=new TreeNode(3);
TreeNode node4=new TreeNode(4);
TreeNode node5=new TreeNode(5);
TreeNode node6=new TreeNode(6);
TreeNode node7=new TreeNode(7);
node1.setRandL(node2,node3);
node2.setRandL(node4,node5);
node3.setRandL(node6,node7);
List list = new ArrayList<>();
bfs(node1,list);
System.out.println(list);
}