java先序递归创建二叉树
来源:互联网 发布:灵肉结合知乎 编辑:程序博客网 时间:2024/05/17 01:06
注:
需要掌握java中引用类型(即对象)的作为方法的参数是按值传递还是按引用传递,且从控制台输入数据的方式和输入的数据格式有要求
整个代码是在同一个文件中
二叉数节点定义:
class Node { public int element; public Node left; public Node right;}
二叉树定义:
class BiTree { Node root; public BiTree(){ this.root = null; }}
从控制台输入数字创建二叉树,控制台输入0表示结束,创建部分代码:
import java.util.Scanner;class Node { public int element; public Node left; public Node right;}class BiTree { Node root; public BiTree() { this.root = null; }}public class TreeApp { /** * 创建tree */ public static Node create(Node node) { Scanner in = new Scanner(System.in); System.out.println("请输入节点的值:"); int value = in.nextInt(); if (value != 0) { node = new Node(); node.element = value; node.left = create(node.left); node.right = create(node.right); } else { //下面的步骤至关重要!!! // node.left = null; // node.right = null; node = null; } return node; } public static void main(String[] args) { BiTree tree = new BiTree(); tree.root = create(tree.root); System.out.println(tree.root); System.out.println(tree.root.element); System.out.println(tree.root.right.element); }}
注意(很重要!!!):
从控制台输入格式有要求,见下面的例子,下例的二叉树只有一个节点,节点值为4,左和右子树的根节点均为空-null,:
请输入节点的值:
输入4,回车
请输入节点的值:
输入0,回车
请输入节点的值:
输入0,回车
过程分析:
1. 当输入非0数字4时,因为root == null, 方法运行前期工作包括首先定义一个 Node node = null, 进入create方法;
2. 因为4 !=0,所以 node = new Node(), 接下来执行node.element = 4,再接下来 执行node.left = create(node.left),进入下一层递归
3. 接2所述,若此时输入数字0,则 在本次递归中生成的临时变量 node == null,并return ,return至上一层递归,故node.left == null,
4. 接2所述,若此时输入一个非0数字,则重复执行2所述操作
完整代码:
import java.util.Scanner;class Node { public int element; public Node left; public Node right;}class BiTree { Node root; public BiTree() { this.root = null; }}public class TreeApp { /** * 创建tree */ public static Node create(Node node) { Scanner in = new Scanner(System.in); System.out.println("请输入节点的值:"); int value = in.nextInt(); if (value != 0) { node = new Node(); node.element = value; node.left = create(node.left); node.right = create(node.right); } else { // node.left = null; // node.right = null; node = null; } return node; } public static void main(String[] args) { BiTree tree = new BiTree(); tree.root = create(tree.root); System.out.println(tree.root); System.out.println(tree.root.element); System.out.println(tree.root.right.element); }}
Reference:
http://blog.csdn.net/stpeace/article/details/8138303
1 0
- java先序递归创建二叉树
- 递归创建先序序列二叉树
- 二叉树的先序递归创建和遍历
- 二叉树的创建、先序、中序、后序、层序的递归与非递归算法(java)
- 二叉树的递归创建,先序(中序、后序)递归遍历二叉树
- 二叉树(先序创建,递归先序,中序,后序遍历)-----1
- 二叉树(先序创建,非递归先序,中序遍历)-----2
- 先序创建二叉树
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树创建、删除、(递归/非递归)先序(中序/后序)遍历
- 二叉树的创建 先序 中序 后续 递归和非递归遍历
- 非递归先序遍历二叉树
- 先序递归建立二叉树
- 非递归先序遍历二叉树
- 先序遍历二叉树 [非递归]
- 递归算法先序遍历二叉树
- 非递归先序遍历二叉树
- 二叉树非递归先序遍历
- LinkMap分析
- Javascript中的async await
- 将排序数组转换为高度最小的二叉搜索树
- LeedCode 之 Palindrome Number
- 可伸缩架构简短系列
- java先序递归创建二叉树
- Java-重点知识梳理
- 常见缓存算法和LRU的c++实现
- MySql面试题
- C#4.0中的元组对象Tuple
- 第十五届北京师范大学程序设计竞赛决赛 D. Disdain Chain【思维】
- T
- c++第五次实验
- 数据结构:单链表(逆序)