树总结

二叉树总结:
树的概述
树的组成:
1.根节点
2.叶子节点
3.路径(分支)
树的深度:
从根节点开始到叶子节点的路径数最多的哪一个就是树的深度。
度:
表示一个父节点有多少个子节点。
高度:
树的深度加1
树和二叉树的区别
二叉树的每一个父节点最多只能有2个子节点。
树可以有无限个子节点。
二叉树的左子节点和右子节点是有顺序的。
二叉树的顺序是自己定义的规则。
树的遍历方式有哪几种?
前序遍历:先根,再左,之后右
中序遍历:先左,再根,之后右
后序遍历:先左,再右,之后根
层次遍历:一层一层的遍历
下面是对树的操作:
要建立一棵树,和链表一样,首先要建立节点类
public class TreeNode {
private String obj;
private TreeNode lchild; // 创建右子树
private TreeNode rchild; // 创建左子树
/**
* 构造方法
*/
public TreeNode(String obj) {
this.obj = obj;
}

/**
* 设置当前节点
* @param obj
*/
public void setObj(String obj) {
this.obj = obj;
}

/**
* 得到当前节点
* @return
*/
public String getObj() {
return obj;
}

/**
* 设置左子树
* @param lchild
*/
public void setleft(TreeNode lchild) {
this.lchild = lchild;
}

/**
* 得到左子树
* @return
*/
public TreeNode getleft() {
return lchild;
}

/**
* 设置右子树
* @param rchild
*/
public void setright(TreeNode rchild) {
this.rchild = rchild;
}
/**
* 得到右子树
* @return
*/
public TreeNode getright() {
return rchild;
}
}
建立好节点之后就是创建树。
public class DoubleTree extends JFrame{
public static void main(String[] args) {
DoubleTree tree = new DoubleTree();
//创建节点
TreeNode root = new TreeNode("根");
TreeNode node1 = new TreeNode("节点1");
TreeNode node2 = new TreeNode("节点2");
TreeNode node3 = new TreeNode("节点3");
TreeNode node4 = new TreeNode("节点4");
//设置节点之间的关系
root.setleft(node1);
root.setright(node2);
node1.setleft(node3);
node1.setright(node4);
}
这样一颗简单的树就创建好了。然后是输出树(通过递归遍历树),代码如下:
先序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
System.out.println(root.getObj());
printTree(root.getleft());
printTree(root.getright());
}
}
中序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
printTree(root.getleft());
System.out.println(root.getObj());
printTree(root.getright());
}
}
后序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
printTree(root.getleft());
printTree(root.getright());
System.out.println(root.getObj());
}
}

猜你喜欢

转载自lsx111.iteye.com/blog/1612231