二叉树的先根遍历
来源:互联网 发布:如何网络销售水果 编辑:程序博客网 时间:2024/05/20 10:52
二叉树的先根遍历
转载请保留出处:
http://blog.csdn.net/xiaxl/article/details/60134694
面试时,经常问道类似与,获取某一文件夹下所有文件和文件夹;二叉树遍历等问题。
这是一类问题,以二叉树的先根遍历举例:
递归实现
public class Test { /** * 二叉树节点类 */ public static class BinaryTreeNode { // 根节点数据 int data; // 左子树 BinaryTreeNode leftNode; // 右子树 BinaryTreeNode rightNode; // 实例化二叉树类 public BinaryTreeNode(int data) { this.data = data; } } /** * 向二叉树中插入子节点 * * 插入规则:左节点小于根节点,右节点大于根节点 * * @param rootNode * 二叉树根节点 * @param data * 插入的数据 */ public static void insertBinaryTreeNode(BinaryTreeNode rootNode, int data) { // 二叉树的左节点都比根节点小 if (data <= rootNode.data) { // 没有左节点,则创建左节点 if (rootNode.leftNode == null) { rootNode.leftNode = new BinaryTreeNode(data); } else { // 有左节点,则以左节点为节点向下一级别递归 insertBinaryTreeNode(rootNode.leftNode, data); } } // 二叉树的右节点都比根节点大 else { // 没有右节点,则创建右节点 if (rootNode.rightNode == null) { rootNode.rightNode = new BinaryTreeNode(data); } else { // 有右节点,则以右节点为节点向下一级别递归 insertBinaryTreeNode(rootNode.rightNode, data); } } } /** * 先根遍历(中左右) * * @param rootNode * 二叉树根节点 */ public static void preOrderBinaryTree(BinaryTreeNode rootNode) { if (rootNode != null) { System.out.print(rootNode.data + "-"); // preOrderBinaryTree(rootNode.leftNode); preOrderBinaryTree(rootNode.rightNode); } } /** * 程序入口 * * @param arg */ public static void main(String arg[]) { // ----------创建二叉树--------- int[] array = { 6, 6, 8, 16, 15, 18, 17 }; // 以12为根节点,创建二叉树 BinaryTreeNode rootNode = new BinaryTreeNode(12); for (int i = 0; i < array.length; i++) { // 向二叉树中插入数据 insertBinaryTreeNode(rootNode, array[i]); } // ----------先根遍历(中左右)--------- System.out.println("先根遍历:"); preOrderBinaryTree(rootNode); }}
生成的二叉树
先根遍历(中左右):
12-6-6-8-16-15-18-17-
0 0
- 二叉树的先根遍历
- 基于栈来实现二叉树的先根遍历
- 二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- C++二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- Linux 防火墙设置失败
- gcc常用编译选项详解
- C# 常用的正则表达式
- iOS 图片 保存到沙盒路径/相册、图片缩小、图片截取
- Ubuntu14.04下sick LMS5xx的gmapping建图
- 二叉树的先根遍历
- jquery中children及find的不同
- 控制浏览器全屏的事件
- 移动端弹出框组件 - Dialog
- 前端高质量知识(五)-JS详细图解全方位解读this
- Servlet的生命周期
- 257. Binary Tree Paths
- HTMlEncode和HTMLDecode、UrlEncode和 UrlDecode 定义和用法
- Java Web开发实例(三) 3.新建菜单和引用CSS文件