- 浏览: 103019 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
dreamoftch:
...
对hibernate的理解 -
quanwsx:
对hibernate的理解 -
zxt1985:
太坑爹了……啥都没
**java网络编程 -
Java_zhou:
坑爹啊。。。
**java网络编程 -
juda:
this code can not work rightly ...
Reverse String
第一题:
struct node_t
{
node_t *left, *right;
int value;
};
要求编写函数 node_t* foo(node_t *node, unsigned int m, unsigned int k);
输出以 node 为根的二叉树第 m 层的第 k 个节点值.
(level, k 均从 0 开始计数)
注意:
此树不是完全二叉树;
所谓的第K个节点,是本层中从左到右的第K个节点
------------------------------------------------------------
第二题:
求二叉树的宽度和高度
package org.jyjiao;
class BiNode {
int data;
BiNode leftChild;
BiNode rightChild;
public BiNode getLeftChild() {
return this.leftChild;
}
public BiNode getRightChild() {
return this.rightChild;
}
public void setLeftChild(BiNode leftChild) {
this.leftChild = leftChild;
}
public void setRightChild(BiNode rightChild) {
this.rightChild = rightChild;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
}
public class BiTree1 {
int num;
BiNode root;
public BiTree1(int num) {
this.num = num;
}
/*
* createTree()--创建一颗二叉树
*/
public BiNode createTree() {
BiNode[] queue = new BiNode[num];
int front = 0, rear = 0, last = 0;
int i = 0;
BiNode root = new BiNode();
root.setData(i);
root.setLeftChild(null);
root.setRightChild(null);
queue[rear++] = root;
while (i < num) {
BiNode node = queue[front++];
// System.out.print("parant:"+node.getData());
int ldata = ++i;
if (ldata < num) {
BiNode lchild = new BiNode();
lchild.setData(ldata);
lchild.setLeftChild(null);
lchild.setRightChild(null);
queue[rear++] = lchild;
node.setLeftChild(lchild);
// System.out.print("lchild:"+lchild.getData());
}
int rdata = ++i;
if (rdata < num) {
BiNode rchild = new BiNode();
rchild.setData(rdata);
rchild.setLeftChild(null);
rchild.setRightChild(null);
queue[rear++] = rchild;
node.setRightChild(rchild);
// System.out.print("rchild:"+rchild.getData()+"\n");
}
}
return root;
}
/*
* public void visitTree(BiNode root) -- 求二叉树的高度和宽度
* 输入:二叉树的根节点
* 打印:二叉树的高度和宽度
* front:已经出队的节点个数
* last:本层最右边的元素为二叉树的第几个元素
* rear:下层当前的入队元素个数
*/
public void visitTree(BiNode root) {
int front = 0, rear = 0, last = 1;
int curWith = 0;
int maxWith = 0;
int hight = 0;
BiNode[] queue = new BiNode[num];
if (root == null) {
System.out.println("tree is null");
} else {
queue[0] = root;
rear++;
while (front != rear) {
BiNode node = queue[front++];
// System.out.println("out:"+node.getData());
curWith++;
if (node.getLeftChild() != null) {
queue[rear++] = node.getLeftChild();
}
if (node.getRightChild() != null) {
queue[rear++] = node.getRightChild();
}
if (front >= last) {
if (curWith > maxWith) {
maxWith = curWith;
}
hight++;
last = rear;
curWith = 0;
}
}
System.out.println("with=" + maxWith + ",hight=" + hight);
}
}
public static void main(String[] args) {
BiTree1 tree = new BiTree1(4);
BiNode root = tree.createTree();
tree.visitTree(root);
}
}
发表评论
-
0928--算法题
2010-09-28 11:14 1554算法设计:n个连续自然数,乱序存放于一个数组中,缺失一个,缺失 ... -
Reverse String
2010-09-19 16:46 1000package org.jyjiao; public c ... -
0906--拼接出最小整数
2010-09-06 10:38 1182题目描述:设有n个正整数,将它们联接成一排,组成一个最小的多位 ... -
0830--算法练习题
2010-08-28 17:42 9311. 内存中有一个长数组,条目数为10万,数组单元为结构体st ... -
??0829-Joseph问题
2010-08-28 16:39 873N个人排成一圈,指定第一个人,去除他,然后跳着一人去除第3人, ... -
???0828--存储空间管理器+n选m问题
2010-08-28 16:36 1032用单链表实现一个存储空间管理器,包括分配和释放空间。要求释放 ... -
# 0827--算法练习题
2010-08-25 14:12 8201. 一个文本文件有多行 ... -
!!!0826--图
2010-08-25 14:11 651baidu1 -
###0825-1 最短路径+最小支撑树+路径压缩+等价类问题+拓扑排序
2010-08-25 13:28 833dijkska算法实现 floyed算法实现 ... -
# 0823--树进阶
2010-08-25 13:27 7331. 判断一棵二叉树是否平衡 2. 构造AVL ... -
#0822 系分
2010-08-23 14:18 671http://www.blogjava.net/ITdavid ... -
0821集合问题
2010-08-23 14:16 786{ aaa, bbb, ccc},{bbb, ddd }, { ... -
0820-mirosoft
2010-08-20 12:43 950传说中微软的几道算法题,练习一下吧: 1.设计一个 ... -
0819- 找共同url
2010-08-18 17:47 831给你a、b两个文件,各存放50亿条url,每条url各占用64 ... -
0819--找队友
2010-08-18 11:52 1046全体员工玩分组游戏,前面五分钟大家分头找队友,并将每个人找到的 ... -
0817--概率问题
2010-08-16 18:53 738输入:N(整数)输入:数据文件A.txt,不超过6条记录,字符 ... -
0816--支配数
2010-08-16 18:52 772支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配 ... -
0815-二叉树
2010-08-14 11:10 968第一题: 在一棵一般的二叉树中找到指定的元素,如果有重 ... -
0811-3 对webservice执行自动化测试
2010-08-11 20:05 9520811-3 对webservice执行自动化测试 i ... -
0812-字典树算法
2010-08-11 19:59 19591. 在用户输入英文单词时,经常发生错误,我们需要对其进行纠错 ...
相关推荐
通过实际编程实践,加深对二叉树这一数据结构的理解,并熟练运用不同的遍历方法(先序、中序、后序和层次遍历)来处理二叉树问题。 ### 数据结构设计 为了实现上述目标,需要设计一种适合存储二叉树的数据结构。...
本报告基于二叉树的遍历方法,旨在通过递归和非递归两种方法创建一棵二叉树,并对其进行先序遍历、中序遍历、后序遍历及层次遍历,并求出该二叉树的深度和叶子结点数。同时,报告还实现了查找功能,能够输入一个结点...
二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树...
数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例...
二叉树的层次遍历(也称为广度优先遍历)是一种遍历二叉树的方法,它按照从根节点开始从上到下、从...以下是一个使用队列实现的二叉树层次遍历的示例代码(假设二叉树节点定义为TreeNode,具有val、left和right属性):
LeetCode 按层次遍历二叉树 按层次遍历二叉树 按层次遍历二叉树 按层次遍历二叉树 按层次遍历二叉树
数据结构课程设计--二叉树的遍历 在计算机科学中,数据结构是指计算机中组织和存储数据的方式。二叉树是一种非常重要的非线性结构,所描述的数据有明显的层次关系,其中的每个元素只有一个前驱。在计算机科学中,...
“二叉树的遍历”是指按照特定顺序访问二叉树的所有节点。这里有三种主要的遍历方法,即前序遍历、中序遍历和后序遍历,它们分别以不同的方式来确定节点的访问顺序。 1. 前序遍历(根-左-右):首先访问根节点,...
实现功能:建立二叉树存储结构、求二叉树的先序遍历、求二叉树的中序遍历、求二叉树的后序遍历、求二叉树的层次遍历、求根到给定结点的路径。 主控菜单: 1.建立二叉树存储结构 2.求二叉树的先序遍历 3.求二叉树...
此外,还可以通过层次遍历(广度优先搜索)来访问二叉树,但这通常不被视为“基本”的遍历方法,因为它的顺序不是基于节点的相对位置,而是基于节点的层级。 在学习和应用这些遍历时,通常会结合实际例子,例如构建...
二叉树的遍历是研究二叉树时的重点内容,因为它涉及到访问树中的每一个节点,而遍历的方法有三种:前序遍历、中序遍历和后序遍历。这三种遍历方式各有其特点和应用场景,对于理解和操作二叉树至关重要。 1. **前序...
(3)掌握二叉树层次遍历算法程序。 实验内容及要求: (1)建立包含10个结点的二叉树(树结构和数据元素的值由自己设定); (2)完成二叉树从左至右,从上至下层次遍历程序; (3)给出程序和遍历程序的结果。 ...
数据结构二叉树的遍历,用到队列,是二叉树必须掌握的一种操作。
它的遍历是理解和操作二叉树的基础,这其中包括前序遍历、中序遍历、后序遍历以及层次遍历(也称为广度优先搜索)。 1. 前序遍历:前序遍历的顺序是“根-左-右”,即首先访问根节点,然后递归地访问左子树,最后...
在数据结构领域,二叉树是一种基础...在实际应用中,如编译器解析源代码、构建文件系统层次结构或构建搜索算法,二叉树遍历都是非常关键的技术。通过课程设计,学生可以深入理解这些概念,并将理论知识转化为实际技能。
在作业中,你被要求实现层次遍历和另一种遍历方式,层次遍历通常使用队列来实现,其步骤如下: 1. 将根节点放入队列。 2. 当队列不为空时,取出队首节点,访问该节点,然后将其左右子节点(如果存在)按顺序入队。 ...
层次遍历(也称为广度优先遍历或 BFS,Breadth-First Search)是一种遍历二叉树的方法,其中树的节点按照从根节点到叶子节点的层次顺序进行访问。每一层的节点从左到右依次访问。 下面是一个示例,说明如何用 ...