проблема при добавлении элемента в двойной LinkedList java - PullRequest
0 голосов
/ 24 марта 2020

Мой код ниже для обхода ордера уровня бинарного дерева. Но он печатает
[[3], [20,9], [20,9], [15,7], [15,7]]
для ввода:
[3,9,20 , ноль, ноль, 15,7]
, где, как и ожидалось, должно быть:
[[3], [20,9], [15,7]]

Я не могу определить как исправить это.

class Solution {
    List<List<Integer>> l=new ArrayList<>();
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {

        zig(root);
        return l;

    }
    public void zig(TreeNode root)
    {
        int h=height(root);
        int itr=1;
        for(int i=1;i<=h;i++)
        {
             //List<Integer> l2=new ArrayList<>();
            printzig(root,i,itr,new ArrayList<>());
            itr=~itr;

        }
    }
    public void printzig(TreeNode root,int level,int itr,ArrayList l2)
    {

        if(root==null)
            return ;
        if(level==1)
        {
            l2.add(root.val);

            l.add(l2);

        }

        if(itr==1)
        {   
            printzig(root.left,level-1,itr,l2);
            printzig(root.right,level-1,itr,l2);    

        }
        else 
        {
            printzig(root.right,level-1,itr,l2);
            printzig(root.left,level-1,itr,l2);

        }

    }
    public int height(TreeNode root)
    {
        if(root==null)
            return 0;

        int l=height(root.left);
        int r=height(root.right);
        return (l>r)?l+1:r+1;
    }
}
...