java面试 简单的创建一个二叉树并遍历(我用的是前序遍历)
1、创建树,代码如下
public class BinaryTree {
TreeNode root;
public void setRoot(TreeNode root) {
this.root = root;
}
public void frontShow() {
root.frontShow();
}
}
2、创建树的节点信息,代码如下
public class TreeNode {
int data; //给节点赋值
TreeNode leftNode; //树的左子节点
TreeNode rightNode; //树的右子节点
public TreeNode(int data){
this.data = data;
}
//写两个节点的set方法
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
//具体的前序遍历如下,用到递归思想
public void frontShow() {
System.out.print(this.data);
if(leftNode != null){
leftNode.frontShow();
}
if(rightNode != null){
rightNode.frontShow();
}
}
}
3、建立一个测试类,验证下所写方法的有效性
public class TestTreeDemo {
public static void main(String[] args) {
//创建二叉树
BinaryTree tree = new BinaryTree();
//创建一个根节点,并且赋值
TreeNode n1 = new TreeNode(1);
//把根节点加入二叉树中
tree.setRoot(n1);
//创建两个树节点
TreeNode n2 = new TreeNode(2);
TreeNode n3 = new TreeNode(3);
//将两个节点分别写成根节点(n1)的左(n2)右(n3)节点
n1.setLeftNode(n2);
n1.setRightNode(n3);
//为n2节点分配左右子节点
n2.setLeftNode(new TreeNode(4));
n2.setRightNode(new TreeNode(5));
//为n3节点分配左右子节点
n3.setLeftNode(new TreeNode(6));
n3.setRightNode(new TreeNode(7));
//调用前序遍历方法
tree.frontShow();//结果为1245367
}
}
4、具体二叉树如下: