需要用到栈
创建一个Stack类,我这边写的是简易栈
public class Stack {
//此栈用于存放节点所以使用TreeNode定义数组
//定义size记录栈内元素
int size = 0;
TreeNode[] arr = new TreeNode[100];
//写入栈方法
public void push(TreeNode val){
arr[size]=val;
size++;
}
//出栈方法
public TreeNode pop(){
return arr[--size];
}
//返回站内元素个数
public int size(){
return size;
}
//判断栈是否为空
public boolean empty(){
return size==0;
}
}
循环遍历的方法。结合上一篇文章使用此方法
上一篇文章
public void LoopTraversal(TreeNode root){
//创建临时变量
TreeNode x = null;
//创建栈对象
Stack stack = new Stack();
//先把根节点压入栈用于循环的判断
stack.push(root);
//判断栈是否为空
while (!stack.empty()){
//取出栈内元素进行左右节点判断
x = stack.pop();
if (x.rc != null) stack.push(x.rc);
if (x.lc != null) stack.push(x.lc);
System.out.print(x.data+"\t");
}
}
评论 (0)