二叉树(深度优先遍历DFS)
(递归实现前中后序遍历,时间复杂度O(N),空间复杂度O(H),H为二叉树高度)
利用Morris算法可实现将空间复杂度降为O(1),时间复杂度不变。
实现Morris并利用Morris实现前中后序遍历和搜索二叉树的判断(java实现)
递归实现
二叉树节点
public static class Node{
public int value;
Node left;
Node right;
public Node(int data) {
this.value = data;
}
先序遍历
public static void preorder(Node head) {
if(node ==null){
return;
}
System.out.println(node.value);
preorder(node.left);
preorder(node.right);
}
中序遍历
public static void inorder(Node head) {
if(node ==null){
return;
}
System.out.println(node.value);
preorder(node.left);
preorder(node.right);
}
后序遍历
public static void postorder(Node head) {
if(node ==null){
return;
}
System.out.println(node.value);
preorder(node.left);
preorder(node.right);
}