前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】创建二叉树,从上至下打印二叉树

【Java】创建二叉树,从上至下打印二叉树

作者头像
瑞新
发布2021-12-06 13:32:42
3420
发布2021-12-06 13:32:42
举报
文章被收录于专栏:用户3288143的专栏
代码语言:javascript
复制
  /**
     * 二叉树的生成
     */


    public static ArrayList<ArrayList<Object>> PrintFromTopToBottom(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        ArrayList<ArrayList<Object>> ret = new ArrayList<>();

        queue.add(root);
        while (!queue.isEmpty()) {
            int cnt = queue.size();
            ArrayList<Object> arr = new ArrayList<>();
            while (cnt-- > 0) {
                TreeNode t = queue.poll();
//                if (t == null || t.data.equals("#"))
//                    continue;

                arr.add(t.data);

                queue.add(t.left);
                queue.add(t.right);
            }

            if (arr.size() != 0)
                ret.add(arr);
        }
        return ret;
    }


    static class TreeNode {
        Object data;
        TreeNode left;
        TreeNode right;

        public TreeNode() {
        }

        public TreeNode(Object data, TreeNode left, TreeNode right) {
            this.data = data;
            this.left = left;
            this.right = right;
        }
    }

    public static TreeNode arrayToBTree(Object[] arrs) {

        List<TreeNode> nodes = new ArrayList<>(arrs.length);
        for (Object obj : arrs) {
            TreeNode treeNode = new TreeNode();
            treeNode.data = obj;
            nodes.add(treeNode);
        }

        for (int i = 0; i < arrs.length/2 - 1; i++) {
            TreeNode node = nodes.get(i);
            node.left = nodes.get(i*2 + 1);
            node.right = nodes.get(i*2 + 2);
        }
        // 只有当总节点数是奇数时,最后一个父节点才有右子节点
        int lastPNodeIndex = arrs.length/2 - 1;
        TreeNode lastPNode = nodes.get(lastPNodeIndex);
        lastPNode.left = nodes.get(lastPNodeIndex*2 + 1);
        if (arrs.length%2 != 0) {
            lastPNode.right = nodes.get(lastPNodeIndex*2 + 2);
        }

        return nodes.get(0);
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档