二叉排序树(java)
2017-01-20 19:39
337 查看
上一篇的二叉树遍历中代码其实我就是二叉排序树的写法,所谓二叉排序树基于树根为准,小于树根则置于左子树,大于树根置于右子树依次递归到结束。
class TreeNode { int value; TreeNode left_node; TreeNode right_node; public TreeNode(int value) { this.value = value; this.left_node = null; this.right_node = null; } } public class BinaryTree { public TreeNode rootNode; public void Add_Node_To_Tree(int value) { if(rootNode == null) { rootNode = new TreeNode(value); return; } TreeNode currentNode = rootNode; while (true) { if(value < currentNode.value) { if(currentNode.left_node == null) { currentNode.left_node = new TreeNode(value); return; } else { currentNode = currentNode.left_node; } } else { if(currentNode.right_node == null) { currentNode.right_node = new TreeNode(value); return; } else { currentNode = currentNode.right_node; } } } } //中序遍历 public void InOrder(TreeNode node) { if(node != null) { InOrder(node.left_node); System.out.print("[" + node.value + "]"); InOrder(node.right_node); } } //前序遍历 public void PreOrder(TreeNode node) { if(node != null) { System.out.print("[" + node.value + "]"); PreOrder(node.left_node); PreOrder(node.right_node); } } //后序遍历 public void PostOrder(TreeNode node) { if(node != null) { PostOrder(node.left_node); PostOrder(node.right_node); System.out.print("[" + node.value + "]"); } } public static void main(String[] args) throws IOException { int value; BinaryTree tree = new BinaryTree(); BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入数据,结束输入-1; \n"); while(true) { value = Integer.parseInt(keyin.readLine()); if(value == -1) break; tree.Add_Node_To_Tree(value); } System.out.println("==================: "); System.out.println("排序完成结果: \n"); tree.InOrder(tree.rootNode); } }
相关文章推荐
- (3)MyEclipse修改Servlet默认模版
- Java并发编程 - Executor,Executors,ExecutorService, CompletionServie,Future,Callable
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
- java动态代理机制
- JDK的动态代理
- Java并发编程 -- 再论锁的问题 -- 无锁与锁优化
- JDK 1.8 List 多次 分组
- windows10(64x)平台下eclipse里运行hadoop2.2程序
- 关于Java中替换\的问题
- 在eclipse中使用Lombok
- java 编译语言 解释语言
- Eclipse手动配置svn
- springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
- (11)Java多线程之Timer
- java中"\t"的显示问题
- javaMail详解
- Java字符串常量池是什么?
- java通过commons-fileupload实现多张图片的上传(jsp页面)
- java通过commons-fileupload实现多张图片的上传(servlet)
- struts2获取addActionErrors登录错误提示