目录
方法一:递归
1.先序遍历
class TreeNode{
int value;
TreeNode left;
TreeNode right;
TreeNode(){}
TreeNode(int value){this.value=value; this.left=null; this.right=null; }
TreeNode(TreeNode left,TreeNode right,int value){ this.left = left; this.right = right; this.value = value; }
}
public static void f(TreeNode head){
if(head==null){
return;
}
System.out.println(head.value);
f(head.left);
f(head.right);
}
2.中序遍历
public static void f(TreeNode head){
if(head==null){
return;
}
f(head.left);
System.out.println(head.value);
f(head.right);
}
3.后序遍历
public static void f(TreeNode head){
if(head==null){
return;
}
f(head.left);
f(head.right);
System.out.println(head.value);
}
方法二:栈
1.先序遍历
public static void preOrderUnReCur(TreeNode head){
if(head==null){
return;
}
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(head);
while(!stack.isEmpty()){
head = stack.pop();
System.out.println(head.value);
if(head.right!=null){
stack.push(head.right)
}
if(head.left!=null){
stack.push(head.left);
}
}
}
2.中序遍历
public static void inOrderUnReCur(TreeNode head){
if(head==null){
return;
}
Stack<TreeNode> stack = new Stack<TreeNode>();
while(!stack.isEmpty() || head!=null){
if(head!=null){
stack.push(head);
head = head.left;
}else{
head = stack.pop();
System.out.println(head.value);
head = head.right;
}
}
}
3.后序遍历
public static void posOrderUnReCur(TreeNode head){
if(head==null){
return;
}
Stack<TreeNode> stack1 = new Stack<TreeNode>();
Stack<TreeNode> stack2 = new Stack<TreeNode>();
stack1.push(head);
while(!stack1.isEmpty()){
head = stack1.pop();
stack2.push(head);
if(head.left!=null){
stack1.push(head.left);
}
if(head.right!=null){
stack1.push(head.right);
}
}
while(!stack2.isEmpty()){
head = stack2.pop();
System.out.println(head.value);
}
}
方法三:队列
宽度优先遍历
public static void w(TreeNode head){
if(head==null){
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(head);
while(!queue.isEmpty()){
head = queue.poll();
System.out.println(head.value);
if(head.left!=null){
queue.add(head.left);
}
if(head.right!=null){
queue.add(head.right);
}
}
}