public void insert(T x){ if(x!=null){ this.root=new BinaryNode<T>(x,this.root,null); } } public BinaryNode<T> insert(BinaryNode<T> p,boolean left,T x){ if(x==null||p==null){ return null; } if(left){ return p.left=new BinaryNode<T>(x, p.left, null); } return p.right=new BinaryNode<T>(x, null, p.right); } public void preorder(){ preorder(this.root); System.out.println(); } public void preorder(BinaryNode<T> p){ if(p!=null){ System.out.print(p.data.toString()+" "); preorder(p.left); preorder(p.right); } } public void inorder(){ inorder(this.root); System.out.println(); } public void inorder(BinaryNode<T> p){ if(p!=null){ inorder(p.left); System.out.print(p.data.toString() + " "); inorder(p.right); } }用这些方法通过java构造一个包含左右子树的二叉树,对学号202207985进行遍历
时间: 2023-06-19 15:06:51 浏览: 47
假设二叉树的节点类型为 `BinaryNode<T>`,节点中存储的数据类型为 `T`,可以按照以下步骤构造包含左右子树的二叉树:
1. 创建根节点,并插入学号202207985:
```
BinaryNode<Integer> root = new BinaryNode<>(202207985, null, null);
```
2. 在根节点的左子树中插入节点:
```
BinaryNode<Integer> leftChild = new BinaryNode<>(1, null, null); // 假设左子节点存储数据为1
root.left = leftChild;
```
3. 在根节点的右子树中插入节点:
```
BinaryNode<Integer> rightChild = new BinaryNode<>(2, null, null); // 假设右子节点存储数据为2
root.right = rightChild;
```
4. 对二叉树进行前序遍历:
```
root.preorder();
```
5. 对二叉树进行中序遍历:
```
root.inorder();
```
完整代码如下:
```
public class BinaryTree<T> {
private BinaryNode<T> root;
public void insert(T x) {
if (x != null) {
this.root = new BinaryNode<>(x, this.root, null);
}
}
public BinaryNode<T> insert(BinaryNode<T> p, boolean left, T x) {
if (x == null || p == null) {
return null;
}
if (left) {
return p.left = new BinaryNode<>(x, p.left, null);
}
return p.right = new BinaryNode<>(x, null, p.right);
}
public void preorder() {
preorder(this.root);
System.out.println();
}
public void preorder(BinaryNode<T> p) {
if (p != null) {
System.out.print(p.data.toString() + " ");
preorder(p.left);
preorder(p.right);
}
}
public void inorder() {
inorder(this.root);
System.out.println();
}
public void inorder(BinaryNode<T> p) {
if (p != null) {
inorder(p.left);
System.out.print(p.data.toString() + " ");
inorder(p.right);
}
}
public static void main(String[] args) {
BinaryNode<Integer> root = new BinaryNode<>(202207985, null, null);
BinaryNode<Integer> leftChild = new BinaryNode<>(1, null, null);
BinaryNode<Integer> rightChild = new BinaryNode<>(2, null, null);
root.left = leftChild;
root.right = rightChild;
root.preorder(); // 输出:202207985 1 2
root.inorder(); // 输出:1 202207985 2
}
}
class BinaryNode<T> {
T data;
BinaryNode<T> left;
BinaryNode<T> right;
public BinaryNode(T data, BinaryNode<T> left, BinaryNode<T> right) {
this.data = data;
this.left = left;
this.right = right;
}
}
```