美文网首页
一种特殊的树的遍历方式

一种特殊的树的遍历方式

作者: 抬头挺胸才算活着 | 来源:发表于2020-06-15 15:57 被阅读0次

    普通层序遍历:

        //打印
        public List<List<Integer>> levelOrder5(TreeNode root) {
            List<List<Integer>> ret = new LinkedList<>();
    
            levelOrder5(root, 0, ret);
            return ret;
        }
    
        private void levelOrder5(TreeNode root, int level, List<List<Integer>> ret) {
            if(root==null)
                return ;
    
            if(ret.size()==level){
                ret.add(new LinkedList<>());
            }
    
            ret.get(level).add(root.val);
    
            levelOrder5(root.left, level+1, ret);
            levelOrder5(root.right, level+1, ret);
        }
    

    之字形层序遍历

        //之字形打印
        public List<List<Integer>> levelOrder4(TreeNode root) {
            List<List<Integer>> ret = new LinkedList<>();
            levelOrder4(root, 0, ret);
            return ret;
        }
    
        private void levelOrder4(TreeNode root, int level, List<List<Integer>> ret) {
            if(root==null)
                return ;
    
            if(ret.size()==level){
                ret.add(new LinkedList<>());
            }
    
            if(level%2 == 0){
                ret.get(level).add(root.val);
            }else{
                ret.get(level).add(0, root.val);
            }
    
            levelOrder4(root.left, level+1, ret);
            levelOrder4(root.right, level+1, ret);
        }
    
    

    相关文章

      网友评论

          本文标题:一种特殊的树的遍历方式

          本文链接:https://www.haomeiwen.com/subject/gqqhxktx.html