C語言實現二叉排序樹的增刪查操作

2021-07-25 12:53:07 字數 1627 閱讀 5665

#include #include typedef struct treenodetreenode;

//構造樹節點

treenode* createtreenode(int val)

//建立樹

treenode* createtree(int *array,int length)

else if(temp->valrchild;

}else

}if(parent->val>array[i])

parent->lchild=createtreenode(array[i]);

else

parent->rchild=createtreenode(array[i]);

i++;

} return root;

}//遞迴尋找刪除節點的位置

void del(treenode *node,int key,treenode *parent)

else if(key>node->val)else

}//刪除節點的核心方法

void deletenode(treenode *node,treenode *parent)else

if(node->lchild==null&&node->rchild==null)else

}else if(node->lchild!=null&&node->rchild==null)else

}else if(node->rchild!=null&&node->lchild==null)else

}else

//替補

node->val = in->val;

if(pre==node)//判斷刪除節點右子樹是否只有乙個節點

pre->rchild = null;

else//如果不是 則刪除pre的左子樹

pre->lchild = null;

}}//先序輸出

void output(treenode *root)

//查詢節點

treenode* searchtree(treenode *root,int key)

if(root->val==key)

root->val>key?searchtree(root->lchild,key):searchtree(root->rchild,key);//向左或向右查詢

}//插入節點

treenode* insertnode(int value,treenode *root)

if(root->val == value)

if(root->val>value)else

return root;

}int main()

; treenode *root = createtree(a,7);

root = insertnode(17,root);//插入

output(root);

del(root,10,root);//刪除

output(root);

//查詢

treenode *node = searchtree(root,20);

output(node);

return 0;

}

c語言 二叉排序樹增刪

一 tree.h pragma once include includetypedef struct binary sort tree bst define bst size sizeof bst bst tree root 這裡如果賦初始值,就是定義了,宣告可以多次,但是定義只能一次。兩個.c檔案...

建立二叉排序樹C語言實現

學會編輯 include include 二叉查詢樹結點描述 typedef int keytype typedef struct node node,pnode 往二叉查詢樹中插入結點 插入的話,可能要改變根結點的位址,所以傳的是二級指標 void inseart pnode root,keyty...

二叉排序樹的增 刪 改 查

public class node public void add int m else else else else public string select int index else if flag.value index else if flag.value index else publ...