Java中使用循环遍历树

渡星河
2022-11-29 / 0 评论 / 15 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年11月29日,已超过660天没有更新,若内容或图片失效,请留言反馈。
需要用到栈

创建一个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");
        }
    }
2

评论 (0)

取消