数据结构:二叉树的三叉链表存储--Java实现
2014-03-17 15:30
393 查看
public class ThreeLinkTree<E> { // 内部节点类 public static class TreeNode { Object data; TreeNode left; TreeNode right; TreeNode parent; public TreeNode(Object data) { this.data = data; } public TreeNode(Object data, TreeNode left, TreeNode right, TreeNode parent) { this.data = data; this.left = left; this.right = right; this.parent = parent; } public TreeNode() { } } // root private TreeNode root; // 默认方式创建二叉树 public ThreeLinkTree() { root = new TreeNode(); } // 指定元素创建二叉树 public ThreeLinkTree(E data) { root = new TreeNode(data); } // 判定二叉树是否为空 public boolean empty() { return root == null; } // 获取根节点 public TreeNode getRoot() { if (empty()) { throw new RuntimeException("无根节点"); } else { return root; } } // 获取指定节点的左节点 public E leftChild(TreeNode node) { if (node == null) { throw new RuntimeException("该节点为空"); } return node.left == null ? null : (E) node.left.data; } // 获取指定节点的右节点 public E rightChild(TreeNode node) { if (node == null) { throw new RuntimeException("该节点为空"); } return node.right == null ? null : (E) node.right.data; } // 获取指定节点的父节点 public E parent(TreeNode node) { if (node == null) { throw new RuntimeException("该节点为空"); } return (E) node.parent.data; } // 向二叉树中添加节点 public TreeNode addNote(TreeNode parent, E data, boolean isleft) { if (parent == null) { throw new RuntimeException("无法添加此节点,此节点为空"); } if (isleft && parent.left != null) { throw new RuntimeException("此节点以有左节点,无法添加"); } if (!isleft && parent.right != null) { throw new RuntimeException("此节点以有右节点,无法添加"); } TreeNode newNode = new TreeNode(data); if (isleft) { parent.left = newNode; } else { parent.right = newNode; } newNode.parent = parent; return newNode; } // 获取二叉树的深度 public int deepin() { return deepin(root); } // 获取指定节点的子树的深度 public int deepin(TreeNode node) { if (node == null) { return 0; } if (node.left == null && node.right == null) { return 1; } else { int leftdeep = deepin(node.left); int rightdeep = deepin(node.right); int max = (leftdeep > rightdeep ? leftdeep : rightdeep); return max + 1; } } }
相关文章推荐
- 二叉树的三叉链表存储(java实现)
- 二叉树的三叉链表存储及其Java实现
- 数据结构:二叉树的二叉链表存储--Java实现
- 数据结构:二叉树的链式存储实现
- 数据结构学习之-二叉树的定义和存储实现
- 数据结构--java实现二叉树的先序、中序、后序、层次遍历及根据先序中序建立二叉树
- 数据结构Java实现——④数组—>稀疏矩阵三元组顺序存储-->矩阵的倒置
- java 数据结构二叉树的实现代码
- 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
- 【数据结构】之二叉树的java实现
- 数据结构 --- Java之二叉树的实现
- 使用java实现链式存储的二叉树
- Java实现线性存储的二叉树
- JAVA版数据结构之栈的链式存储实现
- 数据结构(JAVA)---二叉树的简单实现及排序
- 数据结构的Java实现——二叉树
- 二叉树顺序存储(java实现)
- java实现二叉树的链式存储
- JAVA数据结构 线性表的链式存储及其实现
- 【数据结构+Java】Java实现二叉树的增查、先/中/后序遍历