1.缺点:递归的方式会创建栈帧,这种方式效率低;
2.递归的思想:对任意一个节点,都先访问发的子节点,在访问右节点;
3.前序遍历就是在:遍历开始之前读取;
package com.ydlclass.tree;
public class RecursiveBinaryTree {
//递归遍历二叉树
private static class Node{//静态内部类
Integer data;
Node left;
Node right;
public Node(Integer data) {
this.data = data;
}
}
//递归方法遍历二叉树
private static void recursiveTree(Node node){
if(node == null){
return;
}
recursiveTree(node.left);
recursiveTree(node.right);
}
//前序的方法遍历
private static void preOrder(Node node){
if (node == null){
return;
}
System.out.println(node.data);
preOrder(node.left);
preOrder(node.right);
}
//中序的方法遍历
private static void midOrder(Node node){
if (node == null){
return;
}
midOrder(node.left);
System.out.println(node.data);
midOrder(node.right);
}
private static void postOrder(Node node){
if (node == null){
return;
}
postOrder(node.left);
postOrder(node.right);
System.out.println(node.data);
}
public static void main(String[] args) {
Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.left.right = new Node(5);
root.right.left = new Node(6);
root.right.right = new Node(7);
postOrder(root);
}
}