二叉树层次遍历II
来源:互联网 发布:淘宝售前客服是做什么? 编辑:程序博客网 时间:2024/06/07 01:55
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
样例
给出一棵二叉树 {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
按照从下往上的层次遍历为:
[
[15,7],
[9,20],
[3]
样例
给出一棵二叉树 {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
按照从下往上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
import java.util.ArrayList;import java.util.LinkedList;import java.util.Scanner;import java.util.Stack;/** * 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7], [9,20], [3]] * * @author Dell * */public class Test70 {public static TreeNode CreatTree(TreeNode t) { Scanner sc=null; sc=new Scanner(System.in); t=creatNode(t,sc); return t; } private static TreeNode creatNode(TreeNode t, Scanner sc) { String temp=sc.next();if(temp.trim().equals("#")){return null;}else{t=new TreeNode(Integer.parseInt(temp));t.left=creatNode(t.left,sc);t.right=creatNode(t.right,sc);return t;}}public static ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root){ if(root==null) return new ArrayList<ArrayList<Integer>>(); ArrayList<ArrayList<Integer>> list=new ArrayList<>(); LinkedList<TreeNode> queue=new LinkedList<>(); Stack<TreeNode> s =new Stack<>(); ArrayList<Integer> list1=new ArrayList<>(); TreeNode p=root; queue.add(p); queue.add(null); while(queue.isEmpty()!=true) { TreeNode temp=queue.poll(); s.push(temp); if(temp!=null) { if(temp.right!=null) { queue.add(temp.right); } if(temp.left!=null) { queue.add(temp.left); } } else { if(queue.isEmpty()!=true) { queue.add(null); } } } s.pop(); while(s.isEmpty()!=true) { TreeNode temp1=s.pop(); if(temp1!=null) { list1.add(temp1.val); } else { list.add(list1); list1=new ArrayList<>(); } if(s.isEmpty()==true) list.add(list1); } return list;}public static void main(String[] args) {TreeNode t=null;t=CreatTree(t);ArrayList<ArrayList<Integer>> list=null; list=levelOrderBottom(t); System.out.println(list);}}
阅读全文
0 0
- 二叉树层次遍历II
- LintCode-二叉树的层次遍历 II
- LintCode 二叉树的层次遍历 II
- 题目:二叉树的层次遍历 II
- LintCode:二叉树的层次遍历 II
- 二叉树的层次遍历 II,lintcode
- 二叉树的层次遍历 II
- 二叉树的层次遍历 II
- 二叉树的层次遍历 II -LintCode
- Lintcode 二叉树的层次遍历 II
- lintcode-二叉树的层次遍历 II
- lintcode-二叉树的层次遍历II-70
- LintCode 70 二叉树的层次遍历 II
- [Lintcode] #70 二叉树的层次遍历 II
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- 层次遍历二叉树
- 层次遍历二叉树
- 二叉树层次遍历
- 单链表的一些常考的面试题——基础篇
- Java线程池的种类
- 从前端小白到技术专家,这里有3点可执行的建议
- 游戏人工智能之状态驱动智能体改进(三)
- 《JavaScript语言精粹》笔记(1)
- 二叉树层次遍历II
- selenium结合docker构建分布式测试环境
- Java 之泛型通配符 ? extends T 与 ? super T 解惑
- Solovay-Stassen素性检验方案
- Git学习笔记:Git的环境搭建与基础操作
- utf-8 和 unicode
- 算法作业_33(2017.6.16第十七周)(算法机考模拟题1)
- 5. Longest Palindromic Substring
- EAP学术论文写作笔记