树的创建以及三种遍历方式
树的创建
树的创建主要在于对类结点的使用,以及元素结点元素的插入,找一个根结点,然后插入即可
TreeNode p = new TreeNode(1);
p.left = new TreeNode(2);
p.right = new TreeNode(3);
//结点类的创建
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val = x;
}
}
public class isSameTree
{
public static void main(String[] args) {
TreeNode p = new TreeNode(1);
p.left = new TreeNode(2);
p.right = new TreeNode(3);
System.out.println("先序遍历:");
preOrderTraverse(p);
System.out.println();
System.out.println("中序遍历:");
inOrderTraverse(p);
System.out.println();
System.out.println("后序遍历:");
postOrderTraverse(p);
System.out.println();
}
三种遍历方式
三种遍历方式没有本质上的区别,只不过是遍历又先后顺序之分,使用递归遍历的话比较简单且容易理解
先序遍历:
//先序遍历
static void preOrderTraverse(TreeNode node) {
if(node == null)
return;
System.out.print(node.val +" ");
preOrderTraverse(node.left);
preOrderTraverse(node.right);
}
中序遍历:
//中序遍历
static void inOrderTraverse(TreeNode node) {
if(node == null)
return;
inOrderTraverse(node.left);
System.out.print(node.val + " ");
inOrderTraverse(node.right);
}
后序遍历:
//后序遍历
static void postOrderTraverse(TreeNode node) {
if(node == null)
return;
postOrderTraverse(node.left);
postOrderTraverse(node.right);
System.out.print(node.val+" ");
}
}
结果展示:
先序遍历:
1 2 3
中序遍历:
2 1 3
后序遍历:
2 3 1
泡泡:
如果不让使用递归进行树的遍历,就需要使用栈来进行非递归的转化,嗯,好好学习。