微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用堆栈方法在锯齿形模式java中遍历二叉树不返回任何内容

如何解决使用堆栈方法在锯齿形模式java中遍历二叉树不返回任何内容

我的算法是这样工作的: 2 堆栈 Q1 和 Q2,其中 Q1 从二叉树的根开始,然后其子节点存储在堆栈 Q2 中,while 循环运行直到堆栈 Q1 为空。堆栈中的值被弹出并将其子节点添加到 Q2 .当它为空时,我们的Truth值更改为false,从left->right to right->left改变孩子的遍历顺序。每个弹出的值都添加一个数组列表中,堆栈Q1为空后,将数组列表添加一个二维数组列表。不幸的是,当我期望它返回树的值时,我的代码没有返回任何内容


    /**
 * DeFinition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val,TreeNode left,TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
       Stack<TreeNode>Q1=new Stack<>();
        Stack<TreeNode>Q2=new Stack<>();
        List<List<Integer>>finalarr=new  ArrayList<>();//final 2d arraylist
        List<Integer>temper=new ArrayList<>();//intermediate 1d arraylist
        Boolean Truth=true;        //truth variable which changes traversing order
        Q1.push(root);             
        while(!Q1.isEmpty()){
            TreeNode ans=Q1.pop(); 
            
            temper.add(ans.val);   //value added to 1d array
            
            if(Truth){
                if(ans.left!=null){      
                    Q2.push(ans.left);
                }
                if(ans.right!=null){
                    Q2.push(ans.right);
                }
            }
            if(!Truth){
                if(ans.right!=null){
                    Q2.push(ans.right);}
                if(ans.left!=null){
                    Q2.push(ans.left);
                }
                }
            }
        if(Q1.isEmpty()){
            finalarr.add(temper);               //2d array adds 1d array 
            for(int i=0;i<temper.size();i++){     //values of 1d array deleted
                temper.remove(i);
            }
            Truth=!Truth;                       //order of traversal reversed
            Stack<TreeNode>temp=Q1;
            Q1=Q2;
            Q2=temp;
            
        }
            
        return finalarr;}
        
       
            
            
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。