二叉树的建立删除及三种遍历实现

本文介绍了一种简洁实用的二叉树C++实现方法,包括插入、删除节点及先序、中序、后序遍历等核心操作,并提供完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树的建立、删除及三种遍历的C++实现

教材上的Tree类写法太累赘,不实用,将树节点直接写成结构体即可

要理解结点的含义以及根结点的重要意义

#include <stdio.h> #include <stdlib.h> //用CPP文件编写,否则编译出错,需要加struct且delete不识别 struct TreeNode { int val; TreeNode * left, * right; }; TreeNode * insertTree(TreeNode * root,int val){//insert new node,return root TreeNode * newNode; if (root == NULL) { newNode = new TreeNode; newNode -> val = val; newNode -> left = NULL; newNode -> right = NULL; return newNode; } if (val < root ->val) root ->left = insertTree(root ->left,val); else root ->right = insertTree(root ->right,val); return root; } void delTree(TreeNode * root){ if(root -> left != NULL) delTree(root -> left); if(root -> right != NULL) delTree(root ->right); delete root; return; } void FLRTraverse(TreeNode * root) {//先序遍历 printf("%d/n",root -> val); if(root -> left != NULL) FLRTraverse(root -> left); if(root -> right != NULL) FLRTraverse(root -> right); return; } void LFRTraverse(TreeNode * root) {//中序遍历 if(root -> left != NULL) LFRTraverse(root -> left); printf("%d/n",root -> val); if(root -> right != NULL) LFRTraverse(root -> right); return; } void LRFTraverse(TreeNode * root) {//后序遍历 if(root -> left != NULL) LRFTraverse(root -> left); if(root -> right != NULL) LRFTraverse(root -> right); printf("%d/n",root -> val); return; } void main(){ //始终记住根是对树而言最重要的结点 FILE * fin; TreeNode *root; int val; fin = fopen("data.txt","r"); root = NULL; while(fscanf(fin,"%d",&val) != EOF) root = insertTree(root,val); fclose(fin); printf("先序遍历:/n"); FLRTraverse(root); printf("/n"); printf("中序遍历:/n"); LFRTraverse(root); printf("/n"); printf("后序遍历:/n"); LRFTraverse(root); printf("/n"); delTree(root); return; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值