當前位置:首頁 » 編程語言 » 二叉樹c語言用什麼定義
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

二叉樹c語言用什麼定義

發布時間: 2023-02-16 07:03:39

1. 請問c語言中二樹杈的定義和具體用法是什麼

二叉樹也是遞歸定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態: (1)空二叉樹——(a); (2)只有一個根結點的二叉樹——(b); (3)右子樹為空的二叉樹——(c); (4)左子樹為空的二叉樹——(d); (5)完全二叉樹——(e)注意:盡管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。

2. 如何用C語言定義一個二叉樹

創建的方法有很多啊
可以用鏈表,可以用數組,而且你的創建到底是形成一個數據結構,還是實實在在的建樹呢
假如這樣
struct
treenode
{
int
data;
treenode
*leftchild;
treenode
*rightchild;
}
這就是一個樹了。你建立很多節點,然後讓左右孩子指向你想要的。也是樹。

3. 請問C語言如何創建二叉樹

創建二叉樹的源程序如下:

#include <cstdlib>

#include <stdio.h>

typedef struct node

{ //樹的結點

int data;

struct node* left;

struct node* right;

} Node;

typedef struct

{ //樹根

Node* root;

} Tree;

void insert(Tree* tree, int value)//創建樹

{

Node* node=(Node*)malloc(sizeof(Node));//創建一個節點

node->data = value;

node->left = NULL;

node->right = NULL;

if (tree->root == NULL)//判斷樹是不是空樹

{

tree->root = node;

}

else

{//不是空樹

Node* temp = tree->root;//從樹根開始

while (temp != NULL)

{

if (value < temp->data)//小於就進左兒子

{

if (temp->left == NULL)

{

temp->left = node;

return;

}

else

{//繼續判斷

temp = temp->left;

}

}

else {//否則進右兒子

if (temp->right == NULL)

{

temp->right = node;

return;

}

else {//繼續判斷

temp = temp->right;

}

}

}

}

return;

}

void inorder(Node* node)//樹的中序遍歷

{

if (node != NULL)

{

inorder(node->left);

printf("%d ",node->data);

inorder(node->right);

}

}

int main()

{

Tree tree;

tree.root = NULL;//創建一個空樹

int n;

scanf("%d",&n);

for (int i = 0; i < n; i++)//輸入n個數並創建這個樹

{

int temp;

scanf("%d",&temp);

insert(&tree, temp);

}

inorder(tree.root);//中序遍歷

getchar();

getchar();

return 0;

}


(3)二叉樹c語言用什麼定義擴展閱讀:

簡單二叉樹定義範例:此樹的順序結構為:ABCDE

#include <cstdlib>

#include <stdio.h>

#include <string>

int main()

{

node* p = newnode;

node* p = head;

head = p;

string str;

cin >> str;

creat(p, str, 0)//默認根結點在str下標0的位置

return 0;

}

//p為樹的根結點(已開辟動態內存),str為二叉樹的順序存儲數組ABCD##E或其他順序存儲數組,r當前結點所在順序存儲數組位置

void creat(node* p, string str, int r)

{

p->data = str[r];

if (str[r * 2 + 1] == '#' || r * 2 + 1 > str.size() - 1)p->lch = NULL;

else

{

p->lch = newnode;

creat(p->lch, str, r * 2 + 1);

}

if (str[r * 2 + 2] == '#' || r * 2 + 2 > str.size() - 1)p->rch = NULL;

else

{

p->rch = newnode;

creat(p->rch, str, r * 2 + 2);

}

}

4. 如何用C語言定義一個二叉樹

如果只是定義的話,下面的code就可以了,歡迎交流
structNode{
intvalue;//二叉樹的值
Node*left;//指向左子樹
Node*right;//指向右子樹
};

5. 數據結構二叉樹的程序,用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;

}

void insertNode(struct TreeNode* root, int val) {

if (root == NULL) {

return;

}

if (val < root->val) {

if (root->left == NULL) {

root->left = createNode(val);

} else {

insertNode(root->left, val);

}

} else {

if (root->right == NULL) {

root->right = createNode(val);

} else {

insertNode(root->right, val);

}

}

}

void printTree(struct TreeNode* root) {

if (root == NULL) {

return;

}

printf("%d ", root->val);

printTree(root->left);

printTree(root->right);

}

int main() {

struct TreeNode* root = createNode(5);

insertNode(root, 3);

insertNode(root, 2);

insertNode(root, 4);

insertNode(root, 7);

insertNode(root, 6);

insertNode(root, 8);

printTree(root);

return 0;

}

在這段代碼中,我們定義了一個結構體 TreeNode 來表示二叉樹的每個節點,結構體中包含了一個節點的數值 val,以及指向左子節點和右子節點的指針 left 和 right。

6. C語言二叉樹定義

這個結構體的{}之後,表示的是類型名稱啊,BiTNode表示這種結構體的類型名稱為BiTNode,*BiTree表示指向這種結構體的指針的類型名稱為BiTree。

比如你定義變數的時候:
BiTNode a;//定義了一個上面那樣的結構體
BiTree b;//定義了一個指針,該指針的類型是指向一個上面那樣的結構體的