二叉树大部分都涉及到递归,因为我们无论哪种遍历方式,都要一层一层,一级一级往下深入,但是递归有的时候确是用的很头疼,所以我整理了一下二叉树的递归方法和非递归方法
package cn.hj;
import java.util.Stack;
public class hhh {
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
//中序遍历
public static void Middle(TreeNode root){
Stack<TreeNode> s = new Stack<TreeNode>();
TreeNode p = root;
while(p!=null || !s.empty()){
while(p!=null){
s.push(p);
p= p.left;
}
p=s.pop();
System.out.println(p.val);
p=p.right;
}
}
//前序遍历
public static void Front(TreeNode root){
Stack<TreeNode> s = new Stack<TreeNode>();
TreeNode p =