数据结构-二叉树 JAVA语言实现
来源:互联网 发布:微信团购源码 编辑:程序博客网 时间:2024/05/17 06:21
数据结构-二叉树 JAVA语言实现
树是一种类似于链表的数据结构,但树是一种典型的非线性结构,一个结点可以指向多个节点。
二叉树是指树的每一个结点有0,1,2个孩子节点。
严格二叉树:每个结点要么有两个孩子结点,要么没有孩子结点。
满二叉树:每个结点正好有两个孩子结点且所有叶子结点都在同一层。
二叉树结构
public class BinaryTreeNode { private int data; private BinaryTreeNode leftNode; private BinaryTreeNode rightNode; public BinaryTreeNode(int data, BinaryTreeNode leftNode, BinaryTreeNode rightNode) { super(); this.data = data; this.leftNode = leftNode; this.rightNode = rightNode; } public BinaryTreeNode() { } public BinaryTreeNode(int data) { this.data = data; this.leftNode = null; this.rightNode = null; } public int getData() { return data; } public void setData(int data) { this.data = data; } public BinaryTreeNode getLeftNode() { return leftNode; } public void setLeftNode(BinaryTreeNode leftNode) { this.leftNode = leftNode; } public BinaryTreeNode getRightNode() { return rightNode; } public void setRightNode(BinaryTreeNode rightNode) { this.rightNode = rightNode; }}
前序遍历
/** * 递归方式 前序遍历 * @param rootNode 根节点 */ private void preOrder(BinaryTreeNode rootNode) { if (rootNode != null) { System.out.print(rootNode.getData() + " "); preOrder(rootNode.getLeftNode()); preOrder(rootNode.getRightNode()); } }
中序遍历
/** * 递归方式 中序遍历 * @param rootNode 根节点 */private void inOrder(BinaryTreeNode rootNode) { if (rootNode != null) { inOrder(rootNode.getLeftNode()); System.out.print(rootNode.getData() + " "); inOrder(rootNode.getRightNode()); }}
后序遍历
/** * 递归方式 后序遍历 * @param rootNode 根节点 */ private void postOrder(BinaryTreeNode rootNode) { if (rootNode != null) { postOrder(rootNode.getLeftNode()); postOrder(rootNode.getRightNode()); System.out.print(rootNode.getData() + " "); } }
初始化二叉树
/** * 初始化二叉树 * @param firstNode 根节点 */ private void initData(BinaryTreeNode firstNode) { BinaryTreeNode node2 = new BinaryTreeNode(2, null, null); BinaryTreeNode node3 = new BinaryTreeNode(3, null, null); BinaryTreeNode node4 = new BinaryTreeNode(4, null, null); BinaryTreeNode node5 = new BinaryTreeNode(5, null, null); BinaryTreeNode node6 = new BinaryTreeNode(6, null, null); BinaryTreeNode node7 = new BinaryTreeNode(7, null, null); firstNode.setLeftNode(node2); firstNode.setRightNode(node3); node2.setLeftNode(node4); node2.setRightNode(node5); node3.setLeftNode(node6); node3.setRightNode(node7); }
执行结果
层次遍历
/** * 层次遍历 * @param firstNode */ private void levelOrder(BinaryTreeNode firstNode) { Queue<BinaryTreeNode> queue = new LinkedList<BinaryTreeNode>(); BinaryTreeNode temp; if (firstNode == null) { return; } queue.add(firstNode); while(!queue.isEmpty()) { temp = queue.remove(); System.out.print(temp .getData()+" "); if (temp.getLeftNode() != null) { queue.add(temp.getLeftNode()); } if (temp.getRightNode() != null) { queue.add(temp.getRightNode()); } } queue.clear(); }
层次遍历结果: 1 2 3 4 5 6 7
查找最大
private int maxNum = 0;; private void findMax(BinaryTreeNode rootNode) { if (rootNode != null) { if (maxNum <= rootNode.getData()) { maxNum = rootNode.getData(); } findMax(rootNode.getLeftNode()); findMax(rootNode.getRightNode()); } }
代码下载地址:
http://download.csdn.net/download/z740852294/10024289
阅读全文
0 0
- 数据结构-二叉树 JAVA语言实现
- java实现二叉树数据结构
- (C语言)二叉树实现(数据结构十三)
- [数据结构]C语言二叉树的实现
- c语言实现二叉树数据结构
- C语言二叉树的数据结构实现
- 数据结构:二叉查找树(C语言实现)
- Java语言实现二叉树
- 【数据结构】数据结构C语言的实现(简单二叉树)
- 【数据结构】之二叉树的java实现
- 【数据结构】之二叉树的java实现
- 数据结构之二叉树的Java实现
- 数据结构-二叉搜所树java实现
- java 二叉树 实现 数据结构 笔试
- 【数据结构】之二叉树的java实现
- 数据结构--二叉查找树的java实现
- Java实现数据结构之二叉查找树
- 【数据结构】之二叉树的java实现
- erlang 数据结构---proplists
- shiro从入门到精通
- request.getQueryString()与request.getParameter()乱码
- 用户运营,如何做好活跃用户的数据分析
- apache 编译安装
- 数据结构-二叉树 JAVA语言实现
- 赌博游戏设计逻辑顺序题目
- RegCreateKeyEx 函数簇详解
- ArcGIS server使用本地api加载地图预览
- NSArray数组的常用操作(遍历、排序、倒序、比较、与字符串的比较)
- request.getContextPath()
- 第一人称摄像机问题
- 游戏中一个死亡复活的bug
- 手写的js图片上传加载工具