创建完全二叉树java
时间: 2023-11-05 07:51:13 浏览: 53
要创建完全二叉树,可以使用队列来辅助构建。下面是一个示例的Java代码:
```java
// 设置TreeNode为内部类:二叉树的存储结构
private class TreeNode {
private T data; // 数据域
private TreeNode left; // 左孩子指针
private TreeNode right; // 右孩子指针
public TreeNode(T data) {
this.data = data;
}
}
/**
* 利用队列创建完全二叉树
* @param data 节点数据
*/
public void add(T data) {
if (this.root == null) {
this.root = new TreeNode(data);
queue.add(this.root);
} else {
if (!queue.isEmpty()) {
TreeNode node = queue.peek();
if (node.left == null) {
node.left = new TreeNode(data);
queue.add(node.left);
} else {
// 左子树不为空,直接操作右子树
node.right = new TreeNode(data);
queue.add(node.right);
// 这时左右子树都不为空了,当前节点出队
queue.poll();
}
}
}
}
```
上述代码中,首先定义了一个内部类TreeNode,表示二叉树的节点。接着,使用add方法来逐个添加节点,这里使用队列queue来辅助构建完全二叉树。当树为空时,直接创建根节点,并将根节点加入队列。否则,从队列中取出第一个节点,并判断其左子树是否为空。若为空,创建左子节点,并将其加入队列。若左子树不为空,直接操作右子树,并将右子节点加入队列。最后,当左右子树都不为空时,将当前节点出队。完成所有节点的添加后,即可得到一个完全二叉树。
请注意,这只是一个示例的实现方法,具体的实现可能会根据需求而有所变化。如果有其他问题,请随时提问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)