二叉树学习笔记。

1. 层序构建和先序遍历:

 1 public class Tree {
 2     public Tree left;
 3     public Tree right;
 4     public int val;
 5
 6     public Tree() {
 7
 8     }
 9
10     public Tree(String n) {
11         this.val = Integer.parseInt(n);
12     }
13
14     public Tree createTreeByLevel(String[] var) {
15         if (var == null) {
16             return null;
17         }
18         if (var[0] == "#") {
19             return null;
20         }
21         int length = var.length;
22         Tree root = new Tree(var[0]);
23         Tree cur = root;
24         int count = 1;
25         insertByLevelOrder(cur, length, count, var);
26
27         return root;
28     }
29
30     void insertByLevelOrder(Tree cur, int length, int count, String[] var) {
31         if (count * 2 - 1 >= length) {
32             return;
33         }
34         if (var[count * 2 - 1] != "#") {
35             cur.left = new Tree(var[count * 2 - 1]);
36         } else
37             cur.left = null;
38         if (count * 2 >= length) {
39             return;
40         }
41         if (var[count * 2] != "#") {
42             cur.right = new Tree(var[count * 2]);
43         } else
44             cur.right = null;
45         if (cur.left != null)
46             insertByLevelOrder(cur.left, length, count * 2, var);
47         if (cur.right != null)
48             insertByLevelOrder(cur.right, length, count * 2 + 1, var);
49         // return cur;
50     }
51
52     @Override
53     public String toString() {
54         String result = "";
55         result = result + this.val + " ";
56         Tree t = this;
57         if (t.left != null) {
58
59             result += t.left.toString();
60         }
61         if (t.right != null) {
62             result += t.right.toString();
63         }
64         return result;
65     }
66 }

在递归的时候一定要判断下一个递归值是否合法。如果不合法应该怎么办?

二叉树学习笔记。

时间: 2024-11-18 15:50:59

二叉树学习笔记。的相关文章

二叉树学习笔记之二叉查找树(BSTree)

二叉查找树即搜索二叉树,或者二叉排序树(BSTree),学习回顾一下有关的知识. >>关于二叉查找树 二叉查找树(Binary Search Tree)是指一棵空树或者具有下列性质的二叉树:1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值:2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值:3. 任意节点的左.右子树也分别为二叉查找树.4. 没有键值相等的节点,这个特征很重要,可以帮助理解二叉排序树的很多操作.二叉查找树具有很高的灵活性,对其优化可

二叉树学习笔记1

数组.向量.链表都是一种顺序容器,它们提供了按位置访问数据的手段.而很多情况下,我们需要按数据的值来访问元素,而不是它们的位置来访问元素.比如有这样一个数组int num[3]={1,2,3},我们可以非常快速的访问数组中下标为2的数据,也就是说我们知道这个数据的位置,就可以快速访问.有时候我们是不知道元素的位置,但是却知道它的值是多少.假设我们有一个变量,存放在num这个数组中,我们知道它的值为2,却不知道它下标是多少,也就是说不知道它的位置.这个时候再去数组中访问这个元素就比较费劲,就得遍历

二叉树学习笔记-实现

上一篇文章中,算是初步了解了二叉树是一种怎样的数据结构,也算是有了一个初步的印象.接下来用自己的代码去实现一个二叉搜索树(以下全叫二叉树)类,对外提供常用的接口,比如insert.erase.size.find等等.就像盖房一样,如果说二叉树是一座建筑,那么其中的节点就是一块块砖.要实现二叉树这个类,就必须先实现节点类,假设我们起名为treeNode.在STL标准库中,像一般的数据结构都是模板类,在这里为了方便起见,假设二叉树这个类中保存的数据全是int型. 这个节点类中,需要包含如下的一些成员

二叉树学习笔记之树的旋转

树旋转(Tree rotation)是二叉树中的一种子树调整操作,每一次旋转并不影响对该二叉树进行中序遍历的结果.树旋转通常应用于需要调整树的局部平衡性的场合. >>左旋和右旋 树的旋转有两种基本的操作,即左旋(逆时针方向旋转)和右旋(顺时针方向旋转). 树旋转包括两个不同的方式,分别是左旋转(以P为转轴)和右旋转(以Q为转轴).两种旋转呈镜像,而且互为逆操作. 下图示意了两种树旋转过程中, 子树的初态和终态 +---+ +---+ | Q | | P | +---+ +---+ / \ ri

java学习笔记13--比较器(Comparable、Comparator)

java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 之前Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序. Comparable接口 可以直接使用java.util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口. Comparable接口的定义如下: public  int

集合类学习笔记

一.概念 集合是存储对象的一种方式.集合中都是存放着地址,方便引用.JDK 1.2版本的时候就有了 二.集合和数组的区别 集合是可变长度,数组是固定长度. 数组可以存储基本数据类型,集合只能存储对象,集合可以存储不同类型的对象. Collection 1.List:元素是有序的,可以重复,有索引 2.Set:元素是无序的,不可以重复,使用hash值排列 三.CURD boolean add(E e); boolean addAll(Collection<? extends E> c); voi

[学习笔记]数据结构与算法

1.排序简单排序:?冒泡排序:将n个数从上往下排列,从第0个数开始依次对前n个.前n-1个.前n-2个数进行比较,保持小数在前大数在后,不符合就交换.在这个过程中,最后一个数始终是最大数.?选择排序:对所有n个.后n-1个.后n-2个依次比较,用一个变量存最小数,一趟比较完成之后,将最小数与所比较数据的第一个数进行交换.在这个过程中,第一个数始终是最小数.?插入排序:从第1个数开始向前扫描比较,小则插入.对于未排序数据,在已排序序列中向前扫描,并找到相应的位置插入.在这个过程中,整个序列局部有序

面向对象先导学习笔记

面向对象先导学习笔记 经过了Python.C语言和数据结构的学习,感觉对于Java这门新学习的语言上手速度明显快了许多.在学习Java的过程中,个人觉得Java的语法规则在很大程度上与C类似,但是在设计程序和具体实现的过程中,更偏向于Python的思路,尤其是对于方法的调用和自带数据结构的使用方面. 数据类型的Java实现 Java自带了大量的数据类型,在完成作业的过程中,个人尝试通过手写二叉树完成问题,但是与Java自带的数据结构相比,无论是在稳定性和运行速度方面都有所欠缺.但是通过自己的摸索

数据结构与算法基础学习笔记

*********************************************            ---算法与数据机结构--- 数据结构:由于计算机技术的发展,需要处理的对象不再是纯粹的数值,还有像字符,表,图像等具有一定结构的数据,需要用好的算法来处理这些数据. 我们把现实中大量而又复杂的问题以特定的数据类型的特定的存储结构保存到主存储器中,以及在此基础上为实现某个功能而执行的相应操作(查找排序),这个相应的操作也叫算法. 数据结构 = 个体 +个体的关系算法 =对存储数据的操