`
jsczxy2
  • 浏览: 1270898 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

数据结构与算法:二叉树

阅读更多

 

public class TreeNode {

	private int data;

	private TreeNode leftNode;

	private TreeNode rightNode;

	public TreeNode(int data) {
		this.data = data;
		this.leftNode = null;
		this.rightNode = null;
	}

	/**
	 * 把value插入二叉树
	 * @param value
	 */
	public void insertNode(int value) {
		if (value < this.data) {
			if (this.leftNode == null)
				this.leftNode = new TreeNode(value);
			else
				this.leftNode.insertNode(value);
		} else if (value > this.data) {
			if (this.rightNode == null)
				this.rightNode = new TreeNode(value);
			else
				this.rightNode.insertNode(value);
		} else {
			return;
		}
	}
	
	/**
	 * 搜索二叉树中是否有value值
	 * @param value
	 * @return
	 */
	public boolean searchNode(int value){
		if(value == this.data)
			return true;
		else if(value < this.data){
			if(this.leftNode != null)
				return this.leftNode.searchNode(value);
			else
				return false;
		}
		else{
			if(this.rightNode != null)
				return this.rightNode.searchNode(value);
			else
				return false;
		}
	}
	
	/**
	 * 前序遍历
	 * @return String
	 */
	public static String preOrder(TreeNode node){
		StringBuffer sb = new StringBuffer();
		sb.append(node.data).append(" ");
		if(node.leftNode != null)
			sb.append(preOrder(node.leftNode));
		if(node.rightNode != null)
			sb.append(preOrder(node.rightNode));
		return sb.toString();
	}

	/**
	 * 中序遍历
	 * @param node
	 * @return String
	 */
	public static String inOrder(TreeNode node){
		StringBuffer sb = new StringBuffer();
		if(node.leftNode != null){
			sb.append(inOrder(node.leftNode));
		}
		sb.append(node.data).append(" ");
		if(node.rightNode != null){
			sb.append(inOrder(node.rightNode));
		}
		return sb.toString();
	}
	
	/**
	 * 后序遍历
	 * @param node
	 * @return String
	 */
	public static String postOrder(TreeNode node){
		StringBuffer sb = new StringBuffer();
		if(node.leftNode != null)
			sb.append(postOrder(node.leftNode));
		if(node.rightNode != null)
			sb.append(postOrder(node.rightNode));
		sb.append(node.data).append(" ");
		return sb.toString();	
	}
	
	public int getData() {
		return data;
	}

	public void setData(int data) {
		this.data = data;
	}

	public TreeNode getLeftNode() {
		return leftNode;
	}

	public void setLeftNode(TreeNode leftNode) {
		this.leftNode = leftNode;
	}

	public TreeNode getRightNode() {
		return rightNode;
	}

	public void setRightNode(TreeNode rightNode) {
		this.rightNode = rightNode;
	}

}

 

 

 

import junit.framework.TestCase;

/**
 * 二叉树
 * 
 * @author jsczxy2
 * 
 */
public class TestBinaryTree extends TestCase {

	@Override
	protected void setUp() throws Exception {
		super.setUp();
	}

	public void testBinaryTree() {
		TreeNode node = new TreeNode(10);
		node.insertNode(6);
		node.insertNode(5);
		node.insertNode(7);
		node.insertNode(11);
		node.insertNode(13);
		node.insertNode(12);
		System.out.println(node.searchNode(7));
		System.out.println(node.searchNode(17));

		System.out.println("前序遍历: " + TreeNode.preOrder(node));
		System.out.println("中序遍历: " + TreeNode.inOrder(node));
		System.out.println("后序遍历: " + TreeNode.postOrder(node));
	}

}
分享到:
评论

相关推荐

    python数据结构与算法-已转档.pdf

    标题中的“Python数据结构与算法”指向了文档内容的核心主题,即通过Python语言来探索和实现数据结构与算法的相关知识。这部分内容主要涵盖Python编程语言中数据结构的实现方式、算法的设计技巧以及递归等编程概念的...

    数据结构与算法 求二叉树上结点的路径

    数据结构与算法-二叉树上结点的路径 本文将详细讲解数据结构与算法中二叉树上结点的路径,包括二叉树的创建、结点路径的查找、前序、中序、后序遍历等知识点。 二叉树的创建 在上面的代码中,我们可以看到二叉树...

    数据结构与算法树与二叉树

    数据结构与算法树与二叉树 树是一种非线性数据结构,常用于存储和管理大量数据。它由节点和边组成,每个节点都包含一个值和一个或多个子节点的指针。树的基本信息包括定义、基本术语、森林与树的关系、树结构与线性...

    数据结构源码:二叉树

    二叉树是一种重要的数据结构,它在计算机科学中扮演着至关重要的角色,特别是在算法和数据存储方面。在本文中,我们将深入探讨二叉树的概念、性质、类型以及相关的操作。 二叉树的基本定义: 二叉树是每个节点最多...

    数据结构与算法实验(C++):二叉树实验-代码

    1.内容概要: (1)实验目的: 1)熟练掌握二叉链的存储特点; 2)熟练掌握二叉树的基本操作; 3)熟练掌握基于二叉链的二叉树操作算法实现; 4)能灵活使用二叉树解决具体的问题。...数据结构与算法实验

    数据结构与算法:链表、二叉树、并查集、图、排序算法、贪心算法、动态规划、单调栈、KMP等.zip

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。在这个压缩包中,"Algorithm-master"可能是一个包含各种算法实现的代码库,涵盖了多个重要主题。以下是对这些主题的详细解释: 1. **链表**:...

    利用C++实现以下经典数据结构算法:线性表、栈、队列、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法)、树.zip

    利用C++实现以下经典数据结构与算法:线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法...

    二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip

    二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip 二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip 二叉树建立遍历冒泡排序快速排序算法:C语言...

    数据结构与算法的ppt

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。这个由廖荣贵和许正宪编著的“数据结构与算法”书籍的PPT版本,提供了对这些关键概念的深入讲解。虽然书中可能未包含源代码,但PPT的形式仍然...

    数据结构与算法:树的题库

    数据结构与算法是计算机科学的核心领域,特别是...通过对这些知识点的分析,我们不仅深化了对二叉树的理解,还进一步掌握了其在数据结构与算法设计中的关键作用。理解这些概念对于解决实际问题和优化算法性能至关重要。

    数据结构实验2.2:二叉树遍历的一些应用.doc

    在本实验报告中,我们探讨了数据结构中的一个重要概念——二叉树及其遍历方法的应用。二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用...

    山东建筑大学计算机学院数据结构实验二:二叉树的遍历

    3、创建一棵二叉树: 4、实现输出以上二叉树先序、中序和后序遍历序列中第k个数据元素的操作; 5、判断二叉树是否是完全二叉树; //先序遍历递归算法 public void preRootTraverse(BiTreeNode T){ if(T != null)...

    数据结构:二叉树

    ### 数据结构:二叉树 #### 一、二叉树简介与定义 二叉树是一种树形结构,其中每个节点最多有两个子节点,通常被称作左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,如搜索算法、排序算法等。 #### 二...

    数据结构与算法-二叉树的创建与操作

    在IT领域,数据结构与算法是编程基础的重要组成部分,尤其对于C++开发者来说更是如此。本主题聚焦于“二叉树的创建与操作”,这是一种特殊的数据结构,它以树的形式存储数据,每个节点最多有两个子节点,通常称为左...

    数据结构实验2.1:二叉树的先序创建、先序遍历、中序遍历、后序遍历.doc

    数据结构实验报告

    数据结构课程设计报告-二叉树的遍历.docx

    7. 程序设计:程序设计中需要考虑到用户界面、数据结构的选择、算法的选择等多个方面。 8. 测试数据:使用多组测试数据来验证程序的正确性。 9. 程序调试:在程序调试中需要考虑到边界情况、异常情况等多个方面。 ...

    二叉树后序遍历的非递归算法

    这是数据结构中二叉树的后序遍历的非递归算法的源代码。

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    数据结构-C语言版:二叉树例题.ppt

    数据结构-C语言版:二叉树例题.ppt 本资源是关于数据结构的知识点总结,主要围绕二叉树的概念和...本资源涵盖了数据结构中的二叉树概念、遍历方式和算法实现等知识点,对于学习数据结构和算法设计具有重要的参考价值。

Global site tag (gtag.js) - Google Analytics