层序遍历

private void LevelOrder(TreeNode node)
{
    Queue<TreeNode> queue = new Queue<TreeNode>();
    queue.Enqueue(node);
    TreeNode treeNode = null;
    while(queue.Count>0)
    {
        treeNode = queue.Dequeue();
        if(treeNode.LeftChild!=null)
            queue.Enqueue(treeNode.LeftChild);
        if(treeNode.RightChild!=null)
            queue.Enqueue(treeNode.RightChild);
        Console.WriteLine(treeNode.data);
    }
}

  

时间: 2024-10-26 09:46:00

层序遍历的相关文章

【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】

[107-Binary Tree Level Order Traversal II(二叉树层序遍历II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example

二叉树的层序遍历

二叉树层序遍历即从上往下.自左而右地访问每个节点,但按这样的顺序的话,相邻访问的两个节点间大多没有直接联系,不易访问,所以会显得比较麻烦,不过我们有队列这个好东西,建一个顺序表队列,里面按顺序存入每个节点的地址,之后在队列中按顺序访问就行了.关键是用队列到底能不能恰好地把每一个节点按从上往下.自左而右的顺序存储起来呢?请看如下分析. local表示当前访问的节点在队列中的位置,length表示队列的长度.local=0时在访问A,此时可把B.C加入队列,length=3:当local=1访问B时

LeetCode OJ:Binary Tree Level Order Traversal(二叉树的层序遍历)

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its level order traversal as: [ [3], [9,20], [15,7] ] 层序遍历,既

二叉树层序遍历的实现

我们可以很容易的使用队列来实现二叉树的层序遍历,代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX 10 4 5 6 //二叉树存储结构定义 7 typedef char Item; 8 typedef struct node *link; 9 struct node {Item item; link l, r;}; 10 11 int Create(link *tp); 12 void show(link

编程之美问题之二叉树层序遍历多种解法

二叉树的层序遍历(要求区分层,例如每层遍历完输出换行) 单单层序遍历非常简单,一个队列就搞定了,但是区分层则要麻烦些.总的思路无非就是在每次print的时候,要能通过某个东西 区分出当前节点是否是一层最后一个节点,或者下一层的最后一个节点,感觉有点类似于机器学习中找个区分度明显的特征: 1.自己的解法,在单队列基础上,输入队列的数据添加一个标志 ,LevelHeaded,同时,在后面插入两个孩子的时候,判断是否这次输出的是队头,如果是的话,先插 个队头标志,再插入孩子,而且插入一次之后,后面不能

层序遍历及其进阶版

输入为:abd##eh###cfi##j##g## 1.普通层序遍历:输出为一行 2.进阶版1:输出每一层,从左向右依次输出 3.进阶版2:S型输出每一层,即从右向左和从左向右交替输出 #include<iostream> #include<vector> using namespace std; template<class T> struct BiNode { T data; BiNode<T>* leftchild,*rightchild; }; te

Java实现二叉树的前序、中序、后序、层序遍历(递归方法)

public class Tree<AnyType extends Comparable<? super AnyType>> { private static class BinaryNode<AnyType> {BinaryNode(AnyType theElement) { this(theElement, null, null); } BinaryNode(AnyType theElement, BinaryNode<AnyType> lt, Bina

SDUT 3344 数据结构实验之二叉树五:层序遍历

数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据.每行是一个长度小于50个字符的字符串. Output 输出二叉树的层次遍历序列. Example I

Java实现二叉搜索树的添加,前序、后序、中序及层序遍历,求树的节点数,求树的最大值、最小值,查找等操作

什么也不说了,直接上代码. 首先是节点类,大家都懂得 /** * 二叉树的节点类 * * @author HeYufan * * @param <T> */ class Node<T extends Comparable<? super T>> { /** * 节点储存的值 */ private T data; /** * 左子节点 */ private Node<T> leftNode; /** * 右子节点 */ private Node<T>

[LeetCode] Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zigz