`
javatome
  • 浏览: 822893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

 
阅读更多

题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ /
6 10
/ / / /
5 7 9 11

输出8 6 10 5 7 9 11。

广度优先遍历

C# codes as below:

using System;

using System.Collections.Generic;

namespace ConsoleApp

{

class RunClass

{

static void Main()

{

Node<int> i1 = new Node<int>() { Value = 4 };

Node<int> i2 = new Node<int>() { Value = 8 };

Node<int> i3 = new Node<int>() { Value = 12};

Node<int> i4 = new Node<int>() { Value = 16};

Node<int> i5 = new Node<int>() { Value = 6, Left = i1, Right = i2 };

Node<int> i6 = new Node<int>() { Value = 14, Left = i3, Right = i4 };

Node<int> i7 = new Node<int>() { Value = 10, Left = i5, Right = i6 };

Tree<int> tree = new Tree<int> { Root = i7 };

new Helper().PrintTree<int>(tree);

Console.ReadLine();

}

}

class Helper

{

public void PrintTree<T>(Tree<T> tree)

{

Node<T> root=tree.Root;

Queue<Node<T>> queue = new Queue<Node<T>>();

queue.Enqueue(root);

while (queue.Count != 0)

{

Node<T> node = queue.Dequeue();

Console.WriteLine(node.Value);

if (node.Left != null)

queue.Enqueue(node.Left);

if (node.Right != null)

queue.Enqueue(node.Right);

}

}

}

class Tree<T>

{

public Node<T> Root { get; set; }

}

class Node<T>

{

public Node<T> Left { get; set; }

public Node<T> Right { get; set; }

public T Value { get; set; }

}

}

分享到:
评论

相关推荐

    一波C语言二元查找树算法题目解答实例汇总

    问题描述:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。  例如输入: 8 / / 6 10 / / / / 5 7 9 11 输出 8 6 10 5 7 9 11  定义二元树(其实是二元搜索树,但并不遍历...

    C语言实现输入一颗二元查找树并将该树转换为它的镜像

    主要介绍了C语言实现输入一颗二元查找树并将该树转换为它的镜像,是数据结构中二元查找树的一个比较经典的算法,有不错的借鉴价值,需要的朋友可以参考下

    树及其应用

    假设自上而下按层次 自左至右输入每个结点的一个三元组 N P L R 其 中N 为本结点的元素 P 为其父结点 L 指示N 为P 的左孩子 R 指示N 为P 的右孩子 试写一个建立二元树在内存的双链表示算法 并实现先根 中根 后 根...

    树或二元树的层次遍历

    二叉树的层次遍历,是指从二叉树0层的根结点开始,按从上至下,从左至右的顺序访问二叉树中的每次结点。 与二叉树的先序、中序、后序三种遍历方法,层次遍历方法更符合自然习惯。在层次遍历过程中,对某一层的结点...

    微软面试题——二元查找树转变成排序的双向链表

    二元查找树转变成排序...输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。

    二元树在内存的双链表示

    假设自上而下按层次,自左至右输入每个结点的一个三元组(N, P, L/R)。其中N为本结点的元素,P为其父结点,L指示N为P 的左孩子,R指示N为P的右孩子。试写一个建立二元树在内存的双链表示算法,并实现先根、中根、后根...

    B-Trees 的实现及分析

    B-Trees 是一类满足特殊...每个结点中的数据按升序排列V1 (k ),每个数据Vi 都存在一棵左子树和一棵右子树,如果左子树不空的话,该子树中所有结点的值都小于Vi,如果右子树不空的话,该子树中所有结点的值都大于Vi。

    对于含有n个内节点的二元树,证明E=I+2n。其中E、I分别为外部和内部路径长度。

    对于含有n个内节点的二元树,证明E=I+2n。其中E、I分别为外部和内部路径长度。

    二元树及其应用

    二元树 及其应用的一个实例,源码

    一波二叉树遍历问题的C++解答实例分享

     输入一颗二元树,从上往下按层打印树的每个节点,同一层按照从左往右的顺序打印。 输入样例: 8 / / 6 10 / / / / 5 7 9 11 输出样例: 代码如下:8 6 10 5 7 9 11 思路分析:  把一颗二叉树抽象成三个节点...

    论文研究-故障树转化为二元决策树的算法研究.pdf

    故障树分析法在实施过程中会遇到计算量大的问题,二元决策图是解决这个问题的一种新途径。故障树转化为二元决策图涉及的一个关键问题就是对基本事件的排序,但是基本事件排序是一个NP问题。为了解决这个问题提出了一...

    我的二元树代码

    我的二元树代码

    决策树二元分类

    此文档是人工智能中的经典算法,决策树二元分类,里面包含多个word文档,十分优秀

    二元查找树转变为双向链表C语言实现

    输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表 要求不能创建任何新的节点,只调整指针的指向 微软面试题

    计算机二级公共基础知识

    对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现:对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支下的子孙结点的最大层次或为p,或为p+1。 完全二叉树具有以下两个性质: 性质1:...

    把二元查找树转变成排序的双向链表 源码

    微软面试题第一题 直接就可以运行 不过二元查找树 不知道怎么自动生成 所以硬生生地一个个敲出来的 为了学习二元树的就不用下了

    数据结构课程设计报告

    B-Trees 是一类满足特殊...每个结点中的数据按升序排列V1 (k ),每个数据Vi 都存在一棵左子树和一棵右子树,如果左子树不空的话,该子树中所有结点的值都小于Vi,如果右子树不空的话,该子树中所有结点的值都大于Vi。

    二叉树实现

    假设以如下说明的三元组 (F、C、L/R) 序列输入一棵二叉树的诸边(其中 F 表示双亲结点的标识,C 表示孩子结点标识,L/R 表示 C 为 F 的左孩子或右孩子),且在输入的三元组序列中,C 是按层次顺序出现的。设结点的标识...

Global site tag (gtag.js) - Google Analytics