郁闷,今天笔试竟然连前序中序后序遍历互求都没做出来,一怒之下,全程写一遍吧!
public class Traverse {
class Node{
public Node() {
// TODO Auto-generated constructor stub
int data = 0;
left = null;
right = null;
}
int data;
Node left;
Node right;
}
Node root;
Traverse(){
root = null;
generateTree();
}
void generateTree(){
int[] arr = {1,4,2,5,6,3,4,6,4};
for(int i = 0; i < arr.length;i++){
buildTree(root, arr[i]);
}
}
void buildTree(Node node,int data){
if(root==null){
root = new Node();
root.data = data;
}else {
if(data<node.data){
if(node.left==null){
Node newNode = new Node();
newNode.data = data;
node.left = newNode;
}else {
buildTree(node.left, data);
}
}else {
if(node.right==null){
Node newNode = new Node();
newNode.data = data;
node.right = newNode;
}else {
buildTree(node.right, data);
}
}
}
}
void Mtranverse(Node node){
if(node!=null)
{
Mtranverse(node.left);
System.out.print(node.data);
Mtranverse(node.right);
}
}
void Rtranverse(Node node){
if(node!=null)
{
Rtranverse(node.left);
Rtranverse(node.right);
System.out.print(node.data);
}
}
void Ltranverse(Node node){
if(node!=null)
{
System.out.print(node.data);
Ltranverse(node.left);
Ltranverse(node.right);
}
}
void printAll(){
Ltranverse(root);System.out.println();
Mtranverse(root);System.out.println();
Rtranverse(root);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Traverse traverse = new Traverse();
traverse.printAll();
}
}