二叉树
来源:互联网 发布:淘宝里最贵的东西 编辑:程序博客网 时间:2024/06/06 20:05
QueueNode:
package date1130;
public class QueueNode<T> {
T data;
public QueueNode<T> next;
}
Queue:
package date1130;
public class Queue<T> {
private QueueNode<T> first = null;
private QueueNode<T> last = null;
// 删除头部元素
public T remove() {
if (first == null) {
return null;
}
QueueNode<T> temp = first;
first = first.next;
return (T) temp.data;
}
// 尾部插入
protected void add(T value) {
QueueNode<T> node = new QueueNode<T>();
node.data = value;
node.next = null;
if (first == null) {
first = node;
last = first;
} else {
last.next = node;
last = node;
}
}
public boolean isEmpty() {
return first == null;
}
}
TreeNode:
public class TreeNode {
char data;
TreeNode leftNode;
TreeNode rightNode;
}
treeTesrt:
package date1130;
public class treeTesrt {
static int i = 0;
public static void main(String[] args) {
String str = "ABD00E00CF000";
// String str = "ABDEH00I00E0J00CF0K00G000";
char[] array = str.toCharArray();
TreeNode root = createTree(array);
System.err.println("前序遍历:");
preOrderTraverse(root);
System.err.println("\n中序遍历:");
inOrderTraverse(root);
System.err.println("\n后序遍历:");
postOrderTraverse(root);
System.err.println("\n层序遍历:");
levelTravel(root);
}
private static TreeNode createTree(char[] array) {
char c = array[i];
i++;
TreeNode node;
if ('0' == c) {
node = null;
} else {
node = new TreeNode();
node.data = c;
node.leftNode = createTree(array);
node.rightNode = createTree(array);
}
return node;
}
private static void preOrderTraverse(TreeNode node) {
if (null != node) {
System.err.print(node.data + " ");
preOrderTraverse(node.leftNode);
preOrderTraverse(node.rightNode);
}
}
private static void inOrderTraverse(TreeNode node) {
if (null != node) {
inOrderTraverse(node.leftNode);
System.err.print(node.data + " ");
inOrderTraverse(node.rightNode);
}
}
private static void postOrderTraverse(TreeNode node) {
if (null != node) {
postOrderTraverse(node.leftNode);
postOrderTraverse(node.rightNode);
System.err.print(node.data + " ");
}
}
/**
*
* @param root
* 树根节点
* 层序遍历二叉树,用队列实现,先将根节点入队列,只要队列不为空,然后出队列,并访问,接着讲访问节点的左右子树依次入队列
*/
public static void levelTravel(TreeNode root) {
if (root == null)
return;
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode temp = queue.remove();
System.err.print(temp.data + " ");
if (temp.leftNode != null)
queue.add(temp.leftNode);
if (temp.rightNode != null)
queue.add(temp.rightNode);
}
}
}
- 二叉树、二叉堆
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 基础C ,预处理指令,宏定义,文件包含
- 自已创建Docker Base Image
- get/post 数据请求方式
- ios中UIApplication的作用及ios程序的启动过程
- 从可执行文件手动删除.reloc
- 二叉树
- UITableView优化技巧
- 每次使用都要去Google的基础知识--.lib与.dll
- COCOS2D-3.9 Data分析
- 字符串匹配--Sunday算法-C语言实现
- Struts2的拦截器机制
- Mybatis查询到多条记录但是映射到list集合只有一条或者条数不对
- Android样式开发——layer-list篇
- 零基础学习sql(4)--- 用户权限角色管理