Binary Tree Level Order Traversal

来源:互联网 发布:数据库中的substring 编辑:程序博客网 时间:2024/06/06 09:51

Binary Tree Level Order Traversal -- leetcode


我的代码:


/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public LinkedList<LinkedList<Integer>> levelOrder(TreeNode root) {        //储存上一个节点用于判断level的开始        LinkedList<TreeNode> ls = new LinkedList();        LinkedList<Integer> height = new LinkedList();        LinkedList<Integer> preheight = new LinkedList();        //root的prenode高度为0        ls.add(root);        height.add(1);        preheight.add(0);        LinkedList<LinkedList<Integer>> levelOrder = new LinkedList();        LinkedList<Integer> temp = new LinkedList();         temp = null;                if (root == null) {            return levelOrder;        }        while(!ls.isEmpty())        {            TreeNode cur = ls.remove();            int preh = preheight.remove();            int curheight = height.remove();            preheight.add(curheight);//如果level改变,新增level链表            if (preh < curheight) {                if(temp != null)                {                    levelOrder.add(temp);                }                temp = new LinkedList();                            }            temp.add(cur.val);            if (cur.left != null) {                ls.add(cur.left);                height.add(curheight+1);            }            if (cur.right != null) {                ls.add(cur.right);                height.add(curheight+1);            }        }        levelOrder.add(temp);        return levelOrder;            }}


-1.27

总结:

1.是遍历二叉树层高的升级版,加入了单独输出每层节点

2.理解java中可以用Linkedlist实现Queue

0 0
原创粉丝点击