美文网首页
二叉树的层次遍历

二叉树的层次遍历

作者: senninha | 来源:发表于2017-04-29 20:53 被阅读60次

    二叉树的层次遍历

    使用一个队列保存先进的节点,再弹出。

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
            LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
            
            ArrayList<Integer> list = new ArrayList<Integer>();
            //保存当前的节点
            TreeNode currentNode = root;
            
            while(currentNode != null){
                //把当前节点的值放进遍历集合中
                list.add(currentNode.val);
                //若当前节点的左右子节点不为空,加入队列
                if(currentNode.left != null){
                    queue.offer(currentNode.left);
                }
                
                if(currentNode.right != null){
                    queue.offer(currentNode.right);
                }
                
                //弹出一个队列,当弹出一个null时循环结束
                currentNode = queue.poll();
            }
            
            return list;
        }
    }
    

    相关文章

      网友评论

          本文标题:二叉树的层次遍历

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