PAT04-树7 二叉搜索树的操作集(Java实现)
来源:互联网 发布:linux系统如何改ip地址 编辑:程序博客网 时间:2024/05/05 03:39
本题为浙大数据结构课后题:
BinTree Insert( BinTree BST, ElementType X );
BinTree Delete( BinTree BST, ElementType X );
Position Find( BinTree BST, ElementType X );
Position FindMin( BinTree BST );
Position FindMax( BinTree BST );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
测试结果:105 8 6 2 4 1 0 10 9 7先序遍历:5 2 1 0 4 8 6 7 10 9 中序遍历:0 1 2 4 5 6 7 8 9 10 二叉树最小值=0二叉树最大值=10删除7,3,83不存在删除7,3,8之后的中序遍历:0 1 2 4 5 6 9 10
下面是java实现的具体代码:
import java.util.Scanner;/* *建立二叉搜索树类 */class BinSearchNode{int value;BinSearchNode left;BinSearchNode right;BinSearchNode(int value){this.value=value;left=null;right=null;}}public class BinarySearchOperate {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);BinSearchNode head=null;int N=sc.nextInt();for(int i=0;i<N;i++){head=insert(sc.nextInt(),head);}System.out.println("先序遍历:");preOrder(head);System.out.println();System.out.println("中序遍历:");inOrder(head);System.out.println();System.out.println("二叉树最小值="+findMin(head));System.out.println("二叉树最大值="+findMax(head));System.out.println("删除7,3,8");head=delete(7,head);head=delete(3,head);head=delete(8,head);System.out.println("删除7,3,8之后的中序遍历:");inOrder(head);sc.close();}/* * 插入操作:这里默认插入元素不重复 */public static BinSearchNode insert(int x,BinSearchNode head){if(head==null){return new BinSearchNode(x);}if(x>head.value){head.right=insert(x,head.right);}else{head.left=insert(x,head.left);}return head;}/* * 递归实现前序遍历 */public static void preOrder(BinSearchNode head){System.out.print(head.value+" ");if(head.left!=null)preOrder(head.left);if(head.right!=null)preOrder(head.right);}/* * 递归实现中序遍历 */public static void inOrder(BinSearchNode head){if(head.left!=null)inOrder(head.left);System.out.print(head.value+" ");if(head.right!=null)inOrder(head.right);}/* * 找最小元:递归实现 */public static int findMin(BinSearchNode head){if(head.left!=null)return findMin(head.left);return head.value;}/* * 找最大元:非递归实现 */public static int findMax(BinSearchNode head){while(head.right!=null){head=head.right;}return head.value;}/* * 删除操作 */public static BinSearchNode delete(int x,BinSearchNode head){if(head==null){System.out.println(x+"不存在");return head;}if(x<head.value)head.left=delete(x,head.left);else if(x>head.value)head.right=delete(x,head.right);else if(head.left!=null && head.right!=null){head.value=findMin(head.right);head.right=delete(head.value,head.right);}elsehead=(head.left==null)?head.right:head.left;return head;}/* * 寻找节点操作 */public static boolean contains(int x,BinSearchNode head){if(head==null)return false;if(x>head.value)return contains(x,head.right);else if(x<head.value)return contains(x,head.left);elsereturn true;}}
0 0
- PAT04-树7 二叉搜索树的操作集(Java实现)
- PAT04-树7 二叉搜索树的操作集【JAVA实现】
- PAT04-树4 是否同一棵二叉搜索树【JAVA实现】
- PAT04-树6 Complete Binary Search Tree 【JAVA实现】
- java实现二叉搜索树(BST)相关操作
- Java创建二叉搜索树,实现搜索,插入,删除操作
- 简单二叉搜索树的JAVA实现。
- 【java】二叉搜索树的实现
- 二叉搜索树的基本java实现
- 二叉搜索树的java实现
- 最优二叉搜索树的java实现
- 二叉搜索树的 java 代码实现
- 二叉搜索树的Java实现
- Java实现二叉搜索树及相关操作
- 手写二叉搜索树(Java实现)
- java实现二叉搜索树
- Java实现二叉搜索树
- Java实现二叉搜索树
- WebStorm keyboard shortcut
- 自定义View知识梳理
- [源码学习] -- yii2源码学习笔记(七) -- model类
- IOS_推送配置(客户端+(PHP)pem文件、(java/c#)p12文件生成)
- vim 基础教程
- PAT04-树7 二叉搜索树的操作集(Java实现)
- Android app日志保存功能
- 常见面试题的解法之二叉树(广度优先,序列化)
- 数据结构之冒泡排序(一)
- xmpp之 bareJidStr 不能为空的错误分析
- redis主从集群搭建及容灾部署
- C语言中memset函数详解
- travel to the lush claws park
- leetcode107&102&103