java二叉树的运用
树节点定义:class TreeNode {public TreeNode left;public TreeNode right;public int value;public TreeNode(TreeNode left, TreeNode right, int value) {this.left = left;this.right = right;this.value = value;}
}二叉树及其操作:public class BinaryTree {public static int getTreeHeight(TreeNode root) {if (root == null)return 0;if (root.left == null && root.right == null)return 1;return 1 + Math.max(getTreeHeight(root.left), getTreeHeight(root.right));}public static void recursePreOrder(TreeNode root) {if (root == null)return;System.out.println(root.value);if (root.left != null)recursePreOrder(root.left);if (root.right != null)recursePreOrder(root.right);}public static void stackPreOrder(TreeNode root) {Stack stack = new Stack();if (root == null)return;stack.push(root);System.out.println(root.value);TreeNode temp = root.left;while (temp != null) {stack.push(temp);System.out.println(temp.value);temp = temp.left;}temp = (TreeNode) stack.pop();while (temp != null) {temp = temp.right;while (temp != null) {stack.push(temp);System.out.println(temp.value);temp = temp.left;}if (stack.empty())break;temp = (TreeNode) stack.pop();}}public static void recurseInOrder(TreeNode root) {if (root == null)return;if (root.left != null)recurseInOrder(root.left);System.out.println(root.value);if (root.right != null)recurseInOrder(root.right);}public static void stackInOrder(TreeNode root) {Stack stack = new Stack();if (root == null)return;elsestack.push(root);TreeNode temp = root.left;while (temp != null) {stack.push(temp);temp = temp.left;}temp = (TreeNode) stack.pop();while (temp != null) {System.out.println(temp.value);temp = temp.right;while (temp != null) {stack.push(temp);temp = temp.left;}if (stack.empty())break;temp = (TreeNode) stack.pop();}}public static void main(String[] args) {TreeNode node1 = new TreeNode(null, null, 1);TreeNode node2 = new TreeNode(null, node1, 2);TreeNode node3 = new TreeNode(null, null, 3);TreeNode node4 = new TreeNode(node2, node3, 4);TreeNode node5 = new TreeNode(null, null, 5);TreeNode root = new TreeNode(node4, node5, 0);System.out.println("Tree Height is " + getTreeHeight(root));System.out.println("Recurse In Order Traverse");recurseInOrder(root);System.out.println("Stack In Order Traverse");stackInOrder(root);System.out.println("Recurse Pre Order Traverse");recursePreOrder(root);System.out.println("Stack Pre Order Traverse");stackPreOrder(root);}
}用LinkedList重写的Stack:import java.util.EmptyStackException;
import java.util.LinkedList;public class Stack {private LinkedList list;public Stack() {this.list = new LinkedList();}public boolean empty() {return list.isEmpty();}public Object peek() {if (empty())throw new EmptyStackException();return list.getLast();}public Object pop() {if (empty())throw new EmptyStackException();return list.removeLast();}public void push(Object o) {list.add(o);}public static void main(String[] args) {Stack stack = new Stack();stack.push(new Integer(1));stack.push(new Integer(11));stack.push(new Integer(1111));stack.push(new Integer(22));stack.push(new Integer(222));stack.push(new Integer(31));stack.push(new Integer(221));while (!stack.empty()) {System.out.println(stack.pop());}}
}
员工对象(包括姓名,账号,性别,年龄)这几个属性
有形如下的人员组织:
A
/ \
B C
/ \ / \
D E F G
/ \
H I
1.请用程序数据结构描述出来,组织结构中的人员用
员工对象表示.
2.编写一个方法,实现输入任何一个人员,按层次打印
出自己及其所有下属.
如输入B:打印出:
B
-D
--H
--I
-E
java二叉树的运用相关推荐
- Java二叉树(递归实现)
Java二叉树 1.二叉树的创建. 2.二叉树的先序,中序,后序,层序遍历. 3.求二叉树的节点个数. 4.求二叉树的高度. 5.打印二叉树第K层元素. 6.求其第K层元素个数. 1.二叉树的创建 p ...
- Java 二叉树基础概念(递归迭代)
目录 1. 树型结构 1.1概念 1.2 概念(重要) 2. 二叉树(重点) 2.1 概念 2.2 二叉树的基本形态 2.3 两种特殊的二叉树 2.4 二叉树的性质 a.满二叉树 b.完全二叉树 2. ...
- Java 二叉树后序遍历(递归/非递归)
Java 二叉树后序遍历(递归/非递归) 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次. 设L.D.R分 ...
- java 二叉树的实现以及前序、中序、后续遍历实现
目录 前言 完全二叉树 完全二叉树实现代码 测试 输出 前言 二叉树是n个有限元素的集合,该集合或者为空.或者由一个称为根(root)的元素及两个不相交的.被分别称为左子树和右子树的二叉树组成,是有序 ...
- Java二叉树的前中后序遍历
Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...
- Java 二叉树中序遍历(递归/非递归)
Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...
- Java二叉树的构建与遍历
一.二叉排序树定义 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree).其定义为:二叉排序树或者是空树,或者是满足如下性 ...
- java 二叉树的高度_Java实现二叉树的建立、计算高度与递归输出操作示例
本文实例讲述了java实现二叉树的建立.计算高度与递归输出操作.分享给大家供大家参考,具体如下: 1. 建立 递归输出 计算高度 前中后三种非递归输出 public class Tree_Link { ...
- java二叉树的实现_二叉树的实现(Java语言描述)
实现二叉树 并先序遍历之. package 二叉树的实现; public class BinaryTree { class Node { int value; // 该节点存储的值. Node lef ...
最新文章
- AI算法领域常用的39个术语(下)
- bootstrap缩小后div互相叠加_纯 JS 实现放大缩小拖拽踩坑之旅
- layer的删除询问框的使用
- micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新
- jsp页面如何通过href跳转到另一个jsp
- 计算机维修需要工具,小200个电脑维护工具,都能去开个维修店了
- tensorflow出现问题Passing (type, 1) or 1type as a synonym of type is deprecated
- php家族族谱代码,家族族谱系统设计.doc
- 【ESP8266】 ESP8266与LittleFS文件系统
- 新颖的_基于web的毕业设计题目50例
- DataNode引用计数磁盘选择策略
- 为什么Excel2016在SharePoint打开file时显示Read Only?
- 这样的也可以发.....
- mcc_generated_files/eusart1.c:208:: error: (1098) conflicting declarations for variable “
- 影视账号涨粉10w,反套路营销获赞百万,小红内容趋势是什么?
- 栈和队列的区别与栈和堆的区别
- python学习-Dya13-函数
- 如何提高条形码识别率
- 灵遁者:突破思维局限去思考时间和维度
- 关于img标签中的alt和title属性作用的说明