2019-04-26

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

思路:利用队列实现树的层序遍历。

Python:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回从上到下每个节点值列表,例:[1,2,3]
    def PrintFromTopToBottom(self, root):
        # write code here
        result = []
        queue = []
        #若根节点为空,返回空列表
        if root == None:
            return []
        #根结点入队
        queue.append(root)
        while queue != []:
            #队首结点出队
            node = queue.pop(0)
            #取队首结点元素
            result.append(node.val)
            #层序遍历左右子结点先后入队
            if node.left != None:
                queue.append(node.left)
            if node.right != None:
                queue.append(node.right)
        return result

Java:

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
/**
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) {
        Queue<TreeNode> queue = new LinkedList<>();//队列
        ArrayList<Integer> resultList = new ArrayList<>();//返回列表
        if(root == null){
            return resultList;//若根节点为空直接返回
        }
        queue.offer(root);//根节点入队
        //若队列不为空,则继续层序遍历
        while(queue.size() != 0){
            TreeNode node = queue.poll();//队首结点出队
            resultList.add(node.val);//存入队首结点元素值
            //层序遍历左右结点先后入队
            if(node.left != null)
                queue.offer(node.left);
            if(node.right != null)
                queue.offer(node.right);
        }
        return resultList;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容