`
jsczxy2
  • 浏览: 1277587 次
  • 性别: 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编程语言中数据结构的实现方式、算法的设计技巧以及递归等编程概念的...

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

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

    非线性数据结构:二叉树的遍历算法详解

    内容概要:本文详细介绍了二叉树的基本概念、...其他说明:二叉树作为基础的非线性数据结构,在许多高级数据结构和算法中起着重要作用。文章提供的理论知识和代码示例,有助于读者系统地掌握二叉树的相关知识和技能。

    数据结构源码:二叉树

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

    数据结构实验二:二叉树的操作与实现

    利用二叉树的二叉链式存储结构设计并实现各种操作算法。 1、二叉树的基本操作算法实现 (1) 利用(广义表)二叉树字符串“A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建二叉树 的二叉链式存储结构;注:请勿根据扩展...

    数据结构与算法实验(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的形式仍然...

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

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

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

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

    数据结构和算法PDF文档

    1000多页的算法题解,包含数据结构,排序,查找,递归,回溯算法,二叉树,动态规划,贪心算法,双指针,滑动窗口,前缀和等。

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

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

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

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

    数据结构:二叉树

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

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

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

Global site tag (gtag.js) - Google Analytics