- 浏览: 98635 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1513算法设计:n个连续自然数,乱序存放于一个数组中,缺失一个,缺失 ... -
Reverse String
2010-09-19 16:46 931package org.jyjiao; public c ... -
0906--拼接出最小整数
2010-09-06 10:38 1157题目描述:设有n个正整数,将它们联接成一排,组成一个最小的多位 ... -
0830--算法练习题
2010-08-28 17:42 9041. 内存中有一个长数组,条目数为10万,数组单元为结构体st ... -
??0829-Joseph问题
2010-08-28 16:39 826N个人排成一圈,指定第一个人,去除他,然后跳着一人去除第3人, ... -
???0828--存储空间管理器+n选m问题
2010-08-28 16:36 1000用单链表实现一个存储空间管理器,包括分配和释放空间。要求释放 ... -
# 0827--算法练习题
2010-08-25 14:12 7831. 一个文本文件有多行 ... -
!!!0826--图
2010-08-25 14:11 624baidu1 -
###0825-1 最短路径+最小支撑树+路径压缩+等价类问题+拓扑排序
2010-08-25 13:28 800dijkska算法实现 floyed算法实现 ... -
# 0823--树进阶
2010-08-25 13:27 7101. 判断一棵二叉树是否平衡 2. 构造AVL ... -
#0822 系分
2010-08-23 14:18 644http://www.blogjava.net/ITdavid ... -
0821集合问题
2010-08-23 14:16 763{ aaa, bbb, ccc},{bbb, ddd }, { ... -
0820-mirosoft
2010-08-20 12:43 913传说中微软的几道算法题,练习一下吧: 1.设计一个 ... -
0819- 找共同url
2010-08-18 17:47 794给你a、b两个文件,各存放50亿条url,每条url各占用64 ... -
0819--找队友
2010-08-18 11:52 1016全体员工玩分组游戏,前面五分钟大家分头找队友,并将每个人找到的 ... -
0817--概率问题
2010-08-16 18:53 712输入:N(整数)输入:数据文件A.txt,不超过6条记录,字符 ... -
0816--支配数
2010-08-16 18:52 742支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配 ... -
0815-二叉树
2010-08-14 11:10 926第一题: 在一棵一般的二叉树中找到指定的元素,如果有重 ... -
0811-3 对webservice执行自动化测试
2010-08-11 20:05 9170811-3 对webservice执行自动化测试 i ... -
0812-字典树算法
2010-08-11 19:59 14851. 在用户输入英文单词时,经常发生错误,我们需要对其进行纠错 ...
相关推荐
编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序以及层次遍历结点访问次序。其中层次遍历的实现需使用循环队列。二叉树结点数据类型建议选用字符类型
数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例...
实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历
实现功能:建立二叉树存储结构、求二叉树的先序遍历、求二叉树的中序遍历、求二叉树的后序遍历、求二叉树的层次遍历、求根到给定结点的路径。 主控菜单: 1.建立二叉树存储结构 2.求二叉树的先序遍历 3.求二叉树...
数据结构二叉树的遍历,用到队列,是二叉树必须掌握的一种操作。
数据结构实验3 二叉树层次遍历 二叉树的层次遍历
实现二叉树遍历,要求采用两种遍历方式实现,其中层次遍历为必选,另一实现可选择层次、前序、后序、中序中的任意一种;作业中应明确指出自身所采用的遍历方式。
这是用c语言编写的二叉树层次遍历程序,使用非递归的方法实现。欢迎使用。
10个数据结构课程设计例子: ...3、二叉树层次排序.c 4、二叉树非递归遍历.c 5、二叉树的建立.c 6、快速排序.c 7、括号匹配.c 8、冒泡排序.c 9、直接插入排序.c 10、直接选择排序.c 注意,亲测有效!
层次遍历二叉树
二叉树的前序、中序、后序、层次等基本遍历,二叉树的前序、中序、后序、层次等基本遍历
主要介绍了C语言排序方法,包含10种排序,数据结构课程设计实例二叉树建立遍历冒泡排序快速排序_二叉排序树_二叉树层次遍历_二叉树非递归遍历_二叉树建立括号匹配直接插入选择代码大学生本科毕业设计期末作业排序...
在完全二叉树中,在层次遍历和先根序遍历中,已知某节点在一种遍历中的编号,求该节点在另一种遍历中的编号。 程序描述: q = 1表示已知某节点在先根序遍历中的编号,求的是它在层次遍历中的编号。 q = 2表示已知的...
目前二叉树普遍用的层次遍历方式是非递归的堆方式,有些考题考了如何用递归方式层次遍历
二叉树的层次遍历
常见的二叉树遍历,分为前序、中序、后续和层次遍历4种。 层次遍历相对比较好理解,对于前3种遍历方式概念的记忆方式应该是这样的:左和右的顺序始终是固定的—先左后右,所谓的前序、中序和后序是针对根来说的。...
自己写的相当全的二叉树函数操作集合,包括二叉树的递归遍历和非递归遍历,以及计算二叉树的深度和叶子节点等
实现树的层次遍历 利用c++代码实现。。。。。。。
二叉树的层次遍历 两个类 二叉树基本操作类 派生出的层次遍历类 控制台程序