`
baby69yy2000
  • 浏览: 187870 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

BinaryTree遍历练习::表达式树

    博客分类:
  • Util
阅读更多
package ExpressionTree;
import TraverseTree.TNode;
import java.util.Stack;;

/**
 * 表达式树
 */
public class ExpTree {
	
	/**表达式树的构建*/
	public static TNode<Character> buildExpTree(String postfixExp) {
		char c;
		TNode<Character> newNode, newLeft, newRight;
		Stack<TNode<Character>> s = new Stack<TNode<Character>>();
		int i = 0, len = postfixExp.length();
		
		while(i != len) {
			while(postfixExp.charAt(i) == ' ' || postfixExp.charAt(i) == '\t')
				i++;
			
			if(i == len)
				break;
			c = postfixExp.charAt(i);
			i++;
			
			if(c == '+' || c == '-' || c == '*' || c == '/') {
				newRight = s.pop();
				newLeft = s.pop();
				
				newNode = new TNode<Character>(c, newLeft, newRight);
				s.push(newNode);
			} else {
				newNode = new TNode<Character>(c);
				s.push(newNode);
			}
		}
		
		if(! s.isEmpty())
			return s.pop();
		else
			return null;
	}
	
	/**中序输出*/
	public static <T> void inorderOutput(TNode<T> t) {
		if (t != null) {
			inorderOutput(t.left);
			System.out.print(t.nodeValue + " ");
			inorderOutput(t.right);
		}
	}

	public static void main(String[] args) {
		String exp = "abc*+";
		TNode<Character> root = ExpTree.buildExpTree(exp);
		ExpTree.inorderOutput(root); // a + b * c
	}

}
分享到:
评论

相关推荐

    JS-expression-binary-tree.zip

    这个"JS-expression-binary-tree.zip"压缩包文件包含了与构建表达式二叉树相关的资源,可能包括源代码、示例和解释文档,适用于浙江理工大学的数据结构课程。 首先,我们需要理解什么是表达式二叉树。表达式二叉树...

    由遍历确定二叉树

    例如,二叉搜索树(Binary Search Tree)的中序遍历可以用于快速查找和排序;在编译器中,表达式树的前序遍历常用于求解表达式的值;在文件系统中,后序遍历可以用来拷贝或删除整个目录结构。 掌握二叉树遍历不仅有...

    RS011二叉数遍历Flash课件

    在实际应用中,二叉树遍历有多种用途,例如构建表达式树、解决迷宫问题、文件系统目录结构的遍历等。通过RS005二叉数后序遍历、RS005二叉数中序遍历和RS005二叉数前序遍历的学习,你可以掌握如何实现这些遍历方法,...

    The-basic-operation-of-a-binary-tree.rar_operation

    后序遍历常用于计算表达式树或释放内存时。 计算树的高度是另一个重要的操作。树的高度是指从根节点到最远叶节点的最长路径上的边数。可以使用递归算法,分别计算左子树和右子树的高度,取两者中的较大值加一作为树...

    2叉树生成和遍历

    后序遍历常用于计算表达式树的值。 二叉树的应用广泛,包括但不限于以下几点: 1. 文件系统:操作系统中的目录结构可看作一棵二叉树,根节点代表根目录,子节点代表子目录或文件。 2. 搜索引擎:二叉搜索树(BST)...

    erchashu.zip_遍历算法

    在实际应用中,二叉树遍历常用于搜索、排序、构建表达式树、树的复制以及数据结构的序列化和反序列化等问题。通过理解并熟练掌握这三种遍历方法,开发者能够更好地处理涉及二叉树的各种问题,从而提高代码的效率和...

    BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_

    在给定的标题“BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_”中,主要涉及了两个关键概念:二叉树(Binary Tree)和镜像遍历(Mirror Traversal)。接下来,我们将深入探讨这两个知识点。 二叉树是一种...

    二叉树的建立与遍历

    例如,如果元素集合已经按照某种顺序(如升序或降序)给出,我们可以创建一个二叉搜索树(Binary Search Tree, BST),其中每个节点的左子树包含所有小于它的元素,右子树包含所有大于它的元素。对于递归建立二叉树...

    二叉树的遍历算法.zip

    在实际应用中,二叉树遍历可以用来解决很多问题,例如构建表达式树、搜索数据、构建文件系统目录结构等。掌握二叉树的遍历算法是理解数据结构和算法基础的重要部分,对提升编程能力和解决复杂问题的能力有显著帮助。...

    算法-二叉树的深度优先和广度优先遍历(包含源程序).rar

    后序遍历常用于计算表达式树的结果或释放二叉树的动态内存。 深度优先搜索的优点在于其空间效率,因为它通常只需要一个较小的栈来存储当前路径。然而,DFS可能会导致较深的递归,对栈空间的需求可能较大。 与DFS...

    leetcode卡-leetcode_practices_learncard_binarytree:我的leetcode练习二叉树学习卡

    本资源“leetcode_practices_learncard_binarytree”是一份全面的二叉树学习卡片,作者通过Java8语言完成了所有相关题目,旨在帮助学习者深入理解二叉树及其相关算法。 一、二叉树基础 二叉树是一种非线性数据结构...

    Leetcode book刷题必备

    29. Convert Sorted Array to Balanced Binary Search Tree:将有序数组转换成平衡的二叉搜索树。 30. Convert Sorted List to Balanced Binary Search Tree:将有序链表转换成平衡的二叉搜索树。 31. Binary Tree ...

    二叉树功能的实现代码

    "Chap4_BinaryTree"可能包含了以上操作的实现,以及可能的扩展练习或案例分析。通过学习和理解这些代码,可以深入理解二叉树的性质和操作,提升编程能力。如果你需要具体代码实现或更深入的解释,请查阅"Chap4_...

    二叉树的基本操作

    例如,前序遍历常用于复制一棵树,中序遍历在二叉搜索树中可以得到有序序列,后序遍历则常用于计算表达式树等。 3. **遍历的实现** 遍历二叉树可以通过递归和非递归两种方式实现。递归方式简单直观,但会增加函数...

    数据结构与算法练习题DS_Exercise4.doc

    8. **二叉搜索树(Binary Search Tree, BST)**: - 中序遍历二叉搜索树会得到一个有序序列。 - 先序遍历二叉搜索树的结点顺序不能确定,因为左右子树的遍历顺序可能不同。 9. **结点编号与孩子关系**: - 在...

    春节7天练丨Day5:二叉树和堆1

    这些遍历方法各有其应用场景,例如在构建表达式树、查找特定模式或复制树结构时会用到。 1. 前序遍历:根节点 -&gt; 左子树 -&gt; 右子树 2. 中序遍历:左子树 -&gt; 根节点 -&gt; 右子树 3. 后序遍历:左子树 -&gt; 右子树 -&gt; 根...

    js代码-二叉树遍历的 三种方法 先中后序

    class BinaryTree { constructor(root) { this.root = root; } preorder() { // 实现前序遍历的代码 } inorder() { // 实现中序遍历的代码 } postorder() { // 实现后序遍历的代码 } } ``` 在`...

    pat题目分类.docx

    - **中序表达式** (1130 Infix Expression): 与表达式树有关,需要理解前序、中序、后序遍历。 - **Z型层序遍历** (1127 ZigZagging on a Tree): 树的遍历技巧,结合层序遍历和中序遍历的变形。 - **前后序遍历**...

    LeetCode练习答案

    - **二叉树的层序遍历(Binary Tree Level Order Traversal)**: 给定一棵二叉树,返回其层序遍历的结果。 - **对称树(Symmetric Tree)**: 判断一个二叉树是否是对称的。 - **相同的树(Same Tree)**: 判断两个二叉树...

    机考攻略,没什么用,自己看着玩的

    1. 二叉树遍历详解:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/leetcodesuan-fa-xiu-lian-dong-hua-yan-shi-xbian-2/ 2. BFS算法框架详解:...

Global site tag (gtag.js) - Google Analytics