这是一个简单的二叉树模板示例
C++示例:
cpp#include <iostream>
class TreeNode {
public:
int data;
TreeNode* left;
TreeNode* right;
TreeNode(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BinaryTree {
public:
TreeNode* root;
BinaryTree() : root(nullptr) {}
void insert(int val) {
root = insertNode(root, val);
}
TreeNode* insertNode(TreeNode* node, int val) {
if (node == nullptr) {
return new TreeNode(val);
}
if (val < node->data) {
node->left = insertNode(node->left, val);
} else {
node->right = insertNode(node->right, val);
}
return node;
}
void inorderTraversal(TreeNode* node) {
if (node == nullptr) {
return;
}
inorderTraversal(node->left);
std::cout << node->data << " ";
inorderTraversal(node->right);
}
};
int main() {
BinaryTree tree;
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(2);
tree.insert(4);
tree.insert(6);
tree.insert(8);
tree.inorderTraversal(tree.root);
return 0;
}
C示例:
c#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
struct TreeNode* createNode(int val) {
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->data = val;
node->left = NULL;
node->right = NULL;
return node;
}
struct TreeNode* insertNode(struct TreeNode* node, int val) {
if (node == NULL) {
return createNode(val);
}
if (val < node->data) {
node->left = insertNode(node->left, val);
} else {
node->right = insertNode(node->right, val);
}
return node;
}
void inorderTraversal(struct TreeNode* node) {
if (node == NULL) {
return;
}
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
int main() {
struct TreeNode* root = NULL;
root = insertNode(root, 5);
root = insertNode(root, 3);
root = insertNode(root, 7);
root = insertNode(root, 2);
root = insertNode(root, 4);
root = insertNode(root, 6);
root = insertNode(root, 8);
inorderTraversal(root);
return 0;
}
Go示例:
gopackage main
import "fmt"
type TreeNode struct {
data int
left *TreeNode
right *TreeNode
}
func createNode(val int) *TreeNode {
return &TreeNode{data: val, left: nil, right: nil}
}
func insertNode(node *TreeNode, val int) *TreeNode {
if node == nil {
return createNode(val)
}
if val < node.data {
node.left = insertNode(node.left, val)
} else {
node.right = insertNode(node.right, val)
}
return node
}
func inorderTraversal(node *TreeNode) {
if node == nil {
return
}
inorderTraversal(node.left)
fmt.Print(node.data, " ")
inorderTraversal(node.right)
}
func main() {
var root *TreeNode
root = insertNode(root, 5)
root = insertNode(root, 3)
root = insertNode(root, 7)
root = insertNode(root, 2)
root = insertNode(root, 4)
root = insertNode(root, 6)
root = insertNode(root, 8)
inorderTraversal(root)
}
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!