2019快完了,太可怕了,趁着国庆还没来,赶紧写几篇藉慰我弱小的心灵。从来不敢把自己写的东西称为文字或者技术,只是随感,随性所写,大部分都是自己犯的错误,谨以此片告诫自己:敏于行讷于言。这年头人都是感性加理性......断:开始今天的主题:二叉树(每个结点最多有两个子树的树结构,左右子树)。不过一般面试以数据结构开始询问:什么是数据结构?数据结构是计算机存储、组织数据的方式;一般指相互之间存在一种或多种特定关系的数据元素的集合。(目的:提高运行或者存储的效率),有图有真相:

二叉树_数据结构

不过这样看着着实很多哈,别急!今天主要是二叉树:二叉树是递归定义的,类型分为:完全二叉树、满二叉树、平衡二叉树(又称AVL树,区别于AVL算法)。对一棵二叉树的遍历有三种情况:DLR(先根次序遍历)、LDR(中根次序遍历)、LRD(后根次序遍历)注:层次遍历,下面代码实现:

import java.util.*;

public class PreorderTraversal {
//二叉树
static List<String> list = new ArrayList<>();

public static void main(String[] args) {
TreeNode treeNode = new TreeNode("a");
treeNode.left = new TreeNode("b");
treeNode.right = new TreeNode("c");
treeNode.left.left = new TreeNode("d");
treeNode.left.left.right = new TreeNode("g");
treeNode.right.left = new TreeNode("e");
treeNode.right.right = new TreeNode("f");
treeNode.right.right.left= new TreeNode("h");
//前
// preorderTraversal(treeNode);
//中
// minOrderRe(treeNode);
//后
// postOrder(treeNode);
//层次遍历
// levelTraversal(treeNode);
System.out.println(Arrays.toString(list.toArray()));
}

//前序遍历
private static List<String> preorderTraversal(TreeNode treeNode) {
if (treeNode == null){
return list;
}
list.add(treeNode.val);
preorderTraversal(treeNode.left);
preorderTraversal(treeNode.right);
return list;
}
//中序遍历
public static List<String> minOrderRe(TreeNode treeNode){
if (treeNode == null){
return list;
}
minOrderRe(treeNode.left);
list.add(treeNode.val);
minOrderRe(treeNode.right);
return list;
}
//后序遍历
public static List<String> postOrder(TreeNode treeNode){
if (treeNode == null){
return list;
}
postOrder(treeNode.left);
postOrder(treeNode.right);
list.add(treeNode.val);
return list;
}

//层次遍历
public static List<String> levelTraversal(TreeNode treeNode){
if (treeNode == null){
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
((LinkedList<TreeNode>) queue).add(treeNode);
while (!queue.isEmpty()){
TreeNode treeNode1 = queue.poll();
//System.out.println(treeNode1.val);
list.add(treeNode1.val);
if (treeNode1.left != null){
((LinkedList<TreeNode>) queue).add(treeNode1.left);
}
if (treeNode1.right != null){
((LinkedList<TreeNode>) queue).add(treeNode1.right);
}
}
return list;
}

}

其实每个知识点都是关联起来的,就像错误一样都是一个接着一个来的,它们都是不怀好意的,那我们也不能客气,心情好就翻翻牌子,心情不好就打入冷宫(开个玩笑,不过学习也是这样的不要逼迫自己学,主动和被动永远不一样,看书可能就是开心一目十行,不开心一个字都入不了眼)真是尴尬又跑题了,see you!!!