- 浏览: 601373 次
- 来自: ...
文章分类
最新评论
-
lgh1992314:
相同的元素呢
一种离散化方法 -
HelloSummerR:
圆心的位置是随机的,于是圆的部分会落到canvas外,那样就显 ...
HTML5 Canvas学习笔记(1)处理鼠标事件 -
hlstudio:
好久没见到sokuban了,这有个java版的,带源码,可以参 ...
求推箱子的最小步数(java) -
肖泽文:
太好了,谢谢你。。有中文注释!
HTML5 推箱子游戏过关演示动画 -
swm8023:
删除操作,将最后一个叶子节点插入后也有可能上浮吧
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
题:对于下图的二叉树,输出其嵌套括号表示
程序运行结果:
H(D(B(,A),C),G(,F(E)))
import java.util.*; public class BinaryTree { protected Node root; public BinaryTree(Node root) { this.root = root; } public Node getRoot() { return root; } /** 构造树 */ public static Node init() { Node a = new Node('A'); Node b = new Node('B', null, a); Node c = new Node('C'); Node d = new Node('D', b, c); Node e = new Node('E'); Node f = new Node('F', e, null); Node g = new Node('G', null, f); Node h = new Node('H', d, g); return h;// root } /** 访问节点 */ public static void visit(Node p) { System.out.print(p.getKey() + " "); } /** 递归实现前序遍历 */ static void preorder(Node p) { if (p != null) { visit(p); preorder(p.getLeft()); preorder(p.getRight()); } } /** 层次遍历*/ static void levelorder(Node p){ if(p==null) return; Queue<Node> queue=new LinkedList<Node>(); queue.offer(p); while(queue.size()>0){ Node temp=queue.poll(); visit(temp); if(temp.getLeft()!=null){ queue.offer(temp.getLeft()); } if(temp.getRight()!=null){ queue.offer(temp.getRight()); } } } //输出二叉树的嵌套括号表示 static void display(Node tree){ if(tree!=null){ System.out.printf("%c",tree.getKey()); if(tree.getLeft()!=null||tree.getRight()!=null){ System.out.printf("("); display(tree.getLeft()); if(tree.getRight()!=null) System.out.printf(","); display(tree.getRight()); System.out.printf(")"); } } } /** * @param args */ public static void main(String[] args) { BinaryTree tree = new BinaryTree(init()); display(tree.getRoot()); } } public class Node { private char key; private Node left, right; public Node(char key) { this(key, null, null); } public Node(char key, Node left, Node right) { this.key = key; this.left = left; this.right = right; } public char getKey() { return key; } public void setKey(char key) { this.key = key; } public Node getLeft() { return left; } public void setLeft(Node left) { this.left = left; } public Node getRight() { return right; } public void setRight(Node right) { this.right = right; } }
程序运行结果:
H(D(B(,A),C),G(,F(E)))
- exvds.zip (1.1 KB)
- 下载次数: 0
发表评论
-
图的练习题(有解答)
2012-12-27 22:23 26531. 填空题 ⑴ 设无向图G ... -
排序练习题
2012-12-27 16:46 1548一、选择题 1、以下序 ... -
2011计算机考研题
2012-12-20 12:19 1502初中的数学书上 ... -
2010计算机考研题:循环左移数组
2012-12-18 16:56 1507一、第一种方法,都想得到的。 static int[] L ... -
两种方法反转单链表
2012-12-17 20:38 1779/** * @author luochengcheng ... -
2009计算机考研题:查找链表中倒数第k个结点
2012-12-15 20:36 1389原理:两个指针先都指向头指针的下一节点,一个指针先走K-1 ... -
二叉搜索树练习 HDU3791
2012-11-25 19:52 1669一棵二叉查找树是按二叉树结构来组织的。这样的树可以用 ... -
上楼梯(深搜+回溯)JAVA解答
2012-11-12 15:28 1359N阶楼梯上楼问题:一次可以走两阶或一阶,请把所有行走方式打印出 ... -
深度优先搜索解组合问题(JAVA)
2012-11-10 12:17 1591题:输出从n不同元素中取m个的所有组合 下面程序使用了深度优先 ... -
图示克鲁斯卡尔构造最小生成树的过程
2012-11-06 11:29 1524... -
图示普里姆算法构造最小生成树的过程
2012-11-06 11:24 1443... -
由二叉树的后序遍历和中序遍历结果写出前序遍历
2012-10-07 17:32 1565【题目】 假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ... -
树与二叉树:选择题50个
2012-08-23 16:33 3095单项选择题 (C) 1. 不含任何结点的空树 ... -
二叉树:填空题
2012-08-22 13:17 1876填空: 1. 由3个结点所 ... -
二叉树:选择题
2012-08-21 15:20 1228下面是有关二叉树的叙述,请判断正误(每小题1分,共10分) ( ... -
如何求完全二叉树的叶子节点数?
2012-08-20 22:21 2898设完全二叉树的高度为K: 题:设一棵完全二叉树有700个 ... -
列磁盘目录(深度优先和广度优先实现)
2012-08-12 00:01 1574有两种常用的方法可用来搜索图:即深度优先搜索和广度优先 ... -
线性表自测题一套及解答
2012-08-10 21:22 2198自测卷 ... -
数据结构概论自测题及答案一套
2012-08-09 21:54 1302一、填空题 ......................... ... -
栈和队列:判断题
2012-08-09 11:35 2243二 判断题 1. 消除递归不一定需要使用栈,此说法( √ ...
相关推荐
本问题的核心是检查给定的一组括号(通常是圆括号"()"、方括号"[]"和大括号"{}")是否按照正确的嵌套规则进行配对。 首先,我们需要理解什么是正确的括号匹配。一个有效的括号序列应该满足以下条件: 1. 打开的括号...
实验题目要求从给定的括号表示法构建二叉树,并进行先序遍历。 首先,二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在这个实验中,二叉树的节点由`BiTNode`结构体表示...
在给定的标题“求存在于二叉树中的算数表达式的值的算法”中,我们主要关注如何利用二叉树结构来解决计算算术表达式值的问题。描述中提到,一个算术表达式通常由一个运算符和两个操作数组成,而这些操作数自身也可以...
二叉树的打印设计使用了广义表的概念,广义表是一种表示嵌套结构的抽象数据类型。在二叉树的打印过程中,根节点位于广义表的开头,左子树和右子树分别以括号包围并用逗号分隔。如果子树不存在,则相应地不打印括号和...
在给定的“JAVA符号匹配”主题中,我们可以深入探讨以下几个知识点: 1. **栈的基本操作**:栈主要有两个基本操作,即压入(push)和弹出(pop)。压入操作将元素添加到栈顶,而弹出操作则从栈顶移除元素。在符号...
对于二叉树,广义表通常用一对括号表示节点,再用逗号分隔其左子树和右子树的表示。若节点为空,则用空列表([])表示。 在处理“pre-mid-creattree.zip”这个压缩包中的程序时,我们需要实现一个算法来执行上述...
}`,表示如果a等于8则执行花括号内的代码块。 - **异常处理**:Java中的异常处理主要通过 `try-catch-finally` 结构来实现。例如: ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 处理异常...
例如,一个简单的树可以用嵌套括号表示为ijdfghabcea (b (d, e (i, j)), c (g, h))。 3. **树的术语**: - **结点(node)**:构成树的基本单元。 - **度(degree)**:结点的子树数量。 - **分支(branch)**:...
4. **二叉树表示法**:另一种方式是构建一个表示逻辑表达式的二叉树。每个节点代表一个操作符或变量,左子树代表左操作数,右子树代表右操作数。通过中缀表达式转二叉树,再用深度优先搜索(DFS)或广度优先搜索...
嵌套表示法则通过括号来表示层次,而广义表表示法则是以列表的形式表示树结构。 树的基本术语包括节点、出度、入度、树的度等。节点包含数据元素和指向子树的指针,出度是节点拥有的非空子树数量,入度是指向节点的...
对于有括号的复杂表达式,我们可能需要构建嵌套的二叉树结构。 接下来,我们详细讨论三种遍历方式: 1. 先序遍历(根-左-右):从根节点开始,首先访问根节点,然后递归地遍历左子树,最后遍历右子树。对于表达式...
给定的二叉树算法涉及到节点的左右子节点的重新连接,可能是树的某种变形或操作。分析算法的功能,理解栈在过程中的作用,以及算法执行后二叉树的变化,是解答这类问题的关键。 8. **Floyd算法**: Floyd-...
- **数据结构与存储:** 数据结构在计算机内存中的表示即数据的存储结构,这是指数据元素在计算机中的存储方式,包括顺序存储、链式存储等。 - **栈的存储结构:** 栈是一种特殊的线性表,它只允许在一端进行插入和...
对于给定的中缀表达式`a+b-a*((c d)/e-f)+g`,最大的操作符个数会在处理括号嵌套时达到,例如在处理`((c d)/e)`时。这里最多会有5个操作符同时在栈中:`(`、`*`、`/`、`d`、`c`。但注意,`d`和`c`是操作数而非操作符...
- 在给定的程序中,输入的值在大于3且不等于10的整数范围内才会输出。 18. **嵌套if语句**: - 此程序会根据条件打印a、b、c的值,当a等于1且b等于2且c等于3时,打印语句才会执行。 19. **逻辑运算与条件判断**...
- 在这个过程中,由于表达式中含有嵌套的括号,所以在处理括号时栈中的操作符数量会增加。 - 最终,在处理表达式中的 `-` 和 `(` 时,栈中的操作符数量会达到最大,此时栈中会有 `+`、`-`、`*`、`(` 和 `(`,共五个...
题目中提到的表达式需要分析其括号嵌套关系以确定是否可能导致栈溢出。 4. **栈的性质**:第3题涉及字符串"ooops"的入栈和出栈顺序。由于栈的特性,不同的入栈顺序可能会产生相同的出栈顺序,题目询问有多少种出栈...