Binary Tree Level Order Traversal II

来源:互联网 发布:淘宝的ip地址是多少 编辑:程序博客网 时间:2024/05/21 11:17

原题如下:
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).

这里写图片描述

我的算法:
1. 首先获得树的高度
2. 层序递归遍历二叉树(从左到右)

实现如下:

package leetCode;import java.util.ArrayList;import java.util.List;public class Solution {    //获得二叉树的高度,采用递归算法,简单实用    int depth(TreeNode root){        int res = 0;        if(root==null){            return 0;        }        int l = depth(root.left);        int r = depth(root.right);        res = Math.max(l, r)+1;        return res;    }    //当前层的高度为level,采用递归算法,简单实用,list为最终的结果list,    //list作参数(java对象作为参数),可以看做是引用传递,在方法中对list修改,能    //影响最终的list    void levelOrder(TreeNode root,int level,List<List<Integer>> list){        if(root==null){            return;        }        int toIndex = list.size()-1;        list.get(toIndex-level).add(root.val);        //从左到右递归层序递归遍历二叉树        levelOrder(root.left,level+1,list);        levelOrder(root.right,level+1,list);    }    public List<List<Integer>> levelOrderBottom(TreeNode root) {        ArrayList<List<Integer>> res = new ArrayList<List<Integer>>();        int dep = depth(root);        for(int i=0;i<dep;i++){            ArrayList<Integer> t = new ArrayList<Integer>();            res.add(t);        }        levelOrder(root,0,res);        return res;    }    public static void main(String[] args) {        TreeNode t = TreeNode.getDefaultTree();        List<List<Integer>> res = new ArrayList<List<Integer>>();        Solution s = new Solution();        res = s.levelOrderBottom(t);        for(int i=0;i<res.size();i++){            System.out.println(res.get(i));        }       }}

TreeNode的代码如下:

package leetCode;public class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) {        val = x;    }    //获得一颗默认的树,跟上面题中一样    public static TreeNode getDefaultTree(){        TreeNode t1 = new TreeNode(3);        TreeNode t2 = new TreeNode(9);        TreeNode t3 = new TreeNode(20);        TreeNode t4 = new TreeNode(15);        TreeNode t5 = new TreeNode(7);        t1.left = t2;        t1.right = t3;        t3.left = t4;        t3.right = t5;        return t1;    }}

原题地址:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝直播前期没人看怎么办 淘宝被投诉商标侵权怎么办 淘宝后商家页面打不开了怎么办 淘宝遇到职业打假人怎么办 发票被复写上字怎么办 淘宝直播广告图片的商品怎么办 美团商家排名低怎么办 想成为淘宝主播怎么办 用移动流量很卡怎么办 淘宝店铺被恶意刷流量怎么办 一个想要公司权利的人怎么办 淘宝商家短信推广告怎么办 在群里乱发信息怎么办 支付宝扫不了码怎么办 淘宝商家收款不发货怎么办 淘宝申请退款商家拒绝怎么办 一件代发找不到供货商怎么办 淘宝京东兼职上当怎么办 退货时快递丢件怎么办 淘宝店铺代销1688有订单怎么办 供应商已解除合作无法代销怎么办 被代运营骗了怎么办 被淘宝运营骗了怎么办 淘宝运营公司骗了怎么办 被金融公司骗了怎么办 天猫品牌方投诉怎么办 淘宝卖家售假被扣了12分怎么办? 淘宝店被投诉了怎么办 淘宝商品被投诉侵权怎么办 淘宝小二胡乱判怎么办 淘宝卖家不干了怎么办 花呗剩下的钱怎么办 蚂蚁花呗无法使用怎么办 淘宝不能用花呗怎么办 淘宝号给冻结了怎么办 淘宝买家号封了怎么办 拼多多商家盗图怎么办 被拼多多盗图了怎么办 淘宝盗用图片被投诉怎么办 淘宝别人盗用我的图片怎么办 淘宝盗图申诉原图过大怎么办