)
在C语言中首先需要引入头文件#includestdio.h #includestdlib.h #includestdbool.h结构体定义typedef struct TreeNode{ int data; TreeNode *left; TreeNode *right; }TreeNode;创建新节点TreeNode *create_node(int data){ TreeNode *p(TreeNode *)malloc(sizeof(TreeNode)); if(!p){ printf(malloc fail); exit(1);} p-datadata; p-leftNULL; P-rightNULL; return p; }创建二叉树递归TreeNode* create_tree(){ int data; printf(请输入节点值-1表示空节点); scanf(%d,data); if(data-1){ return NULL; } TreeNode *nodecreate_tree(data); printf(创建节点%d的左子树\n,data); node-leftcreate_tree(); printf(创建节点%d的右子树\n,data); node-rightcreate_tree(); return node; }前序遍历void pre_order(TreeNode *root){ if(!root){ return;} printf(%d,root-data); pre_order(root-left); pre_order(root-right); }中序遍历void in_order(TreeNode *root){ if(!root){ return;} in_order(root-left); printf(%d,root-data); in_order(root-right); }后序遍历void post_order(TreeNode *root){ if(!root){ return;} post_order(root-left); post_order(root-right); printf(%d,root-data); }查找指定高度TreeNode* find_node(TreeNode *root, int target){ if(!root){ return NULL;} if(roottarget){ return target;} TreeNode *left_resfind_node(root-left,target); if(left_res!NULL){ return left_res;} return find_node(root-right,target); }求树的高度int tree_height(TreeNode *root){ if(!root){ return 0;} int left_htree_height(root-left); int right_htree_height(root-right); return (left_hright_h?left_h:right_h)1; }销毁二叉树void destroy_tree(TreeNode *root){ if(!root){ return;} destroy_tree(root-left); destroy_tree(root-right); free(root); rootNULL; }