简单手撕二叉树
首先我们将简单手撕一个二叉树,一个节点包括值和左右孩子的指针,将一个个节点连接起来就可以构造一个简单的二叉树。
typedef struct BTnode {
int val;
struct BTnode* left;
struct BTnode* right;
} Node;
// 节点创建
Node* BuyNode(int x) {
Node* node = (Node*)malloc(sizeof(Node));
if (node == NULL) {
perror("node fail");
return NULL;
}
node->val = x;
node->left = NULL;
node->right = NULL;
return node;
}
// 树的创建
Node* CreatTree() {
Node* node1 = BuyNode(1);
Node* node2 = BuyNode(2);
Node* node3 = BuyNode(3);
Node* node4 = BuyNode(4);
Node* node5 = BuyNode(5);
Node* node6 = BuyNode(6);
node1->left = node2;
node1->right = node4;
node2->left = node3;
node4->left = node5;
node4->right = node6;
return node1;
}
二叉树节点的求解
如果树是空树,则返回 0;不是空树,可以拆成左子树 + 右子树 + 1(递归调用)。
int TreeSize(Node* root) {
static int size = ;
(root == ) ;
++size;
TreeSize(root->left);
TreeSize(root->right);
size;
}


