zoukankan      html  css  js  c++  java
  • 二叉树层次遍历(剑指Offer面试题32:从上到下打印二叉树)

    图1所示为二叉树的层次遍历,即按照箭头所指方向,按照1、2、3的层次顺序,对二叉树每个节点进行访问

    (此图反映的是自左至右的层次遍历,自右至左的方式类似)。

    要进行层次遍历,需要建立一个队列。先将二叉树头节点入队列,然后出队列,访问该节点,

    如果它有左子树,则将左子树的根结点入队;如果它有右子树,则将右子树的根结点入队。然后出队列,对出队节点访问,

    如此反复直到队列为空为止。

     1 import java.util.*;
     2 class TreeNode
     3 {
     4     int val;
     5     TreeNode left;
     6     TreeNode right;
     7     TreeNode(int val) {
     8         this.val=val;
     9     }
    10 }
    11 class Solution 
    12 {
    13     public void level(TreeNode head) {
    14         Queue<TreeNode> queue=new LinkedList<TreeNode>();
    15         if(head!=null) {
    16             queue.offer(head);
    17             while(queue.size()!=0) {
    18                 TreeNode node=queue.poll();
    19                 System.out.println(node.val);
    20                 if(node.left!=null) {
    21                     queue.offer(node.left);
    22                 }
    23                 if(node.right!=null) {
    24                     queue.offer(node.right);
    25                 }
    26             }
    27         }
    28     }
    29     public static void main(String[] args) {
    30         Solution s=new Solution();
    31         TreeNode head=new TreeNode(1);
    32         head.left=new TreeNode(3);
    33         head.right=new TreeNode(4);
    34         head.left.left=new TreeNode(6);
    35         head.left.right=new TreeNode(5);
    36         s.level(head);
    37     }
    38     
    39 }

    剑指Offer 面试题32:

    题目描述:

    从上往下打印出二叉树的每个节点,同层节点从左至右打印。

    以下为测试通过程序:

     1 import java.util.*;
     2 /**
     3 public class TreeNode {
     4     int val = 0;
     5     TreeNode left = null;
     6     TreeNode right = null;
     7 
     8     public TreeNode(int val) {
     9         this.val = val;
    10 
    11     }
    12 
    13 }
    14 */
    15 class Solution 
    16 {
    17     public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
    18         Queue<TreeNode> queue=new LinkedList<TreeNode>();
    19         ArrayList<Integer> list=new ArrayList<Integer>();
    20 
    21         if(root!=null) {
    22             queue.offer(root);
    23             while(queue.size()!=0) {
    24                 TreeNode node=queue.poll();
    25                 list.add(node.val);
    26                 if(node.left!=null) {
    27                     queue.offer(node.left);
    28                 }
    29                 if(node.right!=null) {
    30                     queue.offer(node.right);
    31                 }
    32             }
    33         }
    34         return list;
    35     }
    36 }

    欢迎评论!!

  • 相关阅读:
    文件上传漏洞总结篇
    python 构造mysql爆破器
    python写exploit采集器
    文件包含漏洞总结
    python Flask篇(一)
    Python写一个目录检索器
    python爬搜狗微信获取指定微信公众号的文章
    python打造文件包含漏洞检测工具
    python打造漏洞补丁缺少检测
    表单
  • 原文地址:https://www.cnblogs.com/hengzhezou/p/11038265.html
Copyright © 2011-2022 走看看