对的,写一个二叉树创建的代码
时间: 2023-06-03 20:04:14 浏览: 81
好的,下面是二叉树的创建代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
if not preorder or not inorder:
return None
rootVal = preorder[0]
root = TreeNode(rootVal)
rootIndex = inorder.index(rootVal)
root.left = self.buildTree(preorder[1:rootIndex+1], inorder[:rootIndex])
root.right = self.buildTree(preorder[rootIndex+1:], inorder[rootIndex+1:])
return root
```
此处提供了一个递归构建二叉树的方法,建议在理解代码之前先学习二叉树的基本知识。
PS:此处的代码并非实时运行,仅作为示例代码。
相关问题
使用c语言写一个创建二叉树的代码
下面是使用C语言创建二叉树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建二叉树节点
struct TreeNode* createNode(int val) {
struct TreeNode* node = (struct TreeNode*) malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 创建二叉树
struct TreeNode* createBinaryTree() {
int val;
printf("请输入节点的值(-1表示空节点):");
scanf("%d", &val);
if (val == -1) {
return NULL;
}
struct TreeNode* root = createNode(val);
root->left = createBinaryTree();
root->right = createBinaryTree();
return root;
}
// 中序遍历二叉树
void inorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
int main() {
struct TreeNode* root = createBinaryTree();
printf("中序遍历二叉树:");
inorderTraversal(root);
return 0;
}
```
使用方法:
1. 运行程序后,按照提示输入节点的值,-1表示空节点。
2. 输入完成后,程序会自动创建二叉树。
3. 程序会输出中序遍历结果。
用C++代码写一个二叉树的建立
好的,这是一个二叉树的建立的 C 代码示例:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* createTree(int data, TreeNode *left, TreeNode *right) {
TreeNode *new_node = (TreeNode*) malloc(sizeof(TreeNode));
new_node->data = data;
new_node->left = left;
new_node->right = right;
return new_node;
}
int main() {
// 创建叶子节点
TreeNode *leaf1 = createTree(1, NULL, NULL);
TreeNode *leaf2 = createTree(2, NULL, NULL);
TreeNode *leaf3 = createTree(3, NULL, NULL);
TreeNode *leaf4 = createTree(4, NULL, NULL);
TreeNode *leaf5 = createTree(5, NULL, NULL);
TreeNode *leaf6 = createTree(6, NULL, NULL);
TreeNode *leaf7 = createTree(7, NULL, NULL);
// 创建二叉树
TreeNode *root = createTree(0,
createTree(1, leaf1, leaf2),
createTree(2,
createTree(3, leaf3, leaf4),
createTree(4, leaf5, leaf6)));
}
```
在这个代码中,我们定义了一个名为 `TreeNode` 的结构体,表示一个二叉树的节点。每个节点都有一个数据域和两个指针域,分别指向它的左儿子和右儿子。
我们还定义了一个名为 `createTree` 的函数,用于创建一个新的二叉树节点。在 `main` 函数中,我们创建了七个叶子节点,然后使用这些叶子节点和 `createTree` 函数创建了一棵二叉树。
这仅仅是一个简单的二叉树建立的例子,你可以根据自己的需要进行
阅读全文