C++实现二叉树的基本操作】的更多相关文章

#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define FALSE 0 #define TRUE 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struc…
二叉树是一种非常重要的数据结构.本文总结了二叉树的常见操作:二叉树的构建,查找,删除,二叉树的遍历(包括前序遍历.中序遍历.后序遍历.层次遍历),二叉搜索树的构造等. 1. 二叉树的构建 二叉树的基本构建方式为:添加一个节点,如果这是一棵空树,则将该节点作为根节点:否则按照从左到右.先左子树后右子树的顺序逐个添加节点.比如依次添加节点:1,6,10,2,7,11,则得到的二叉树为: 在这里,我们需要借助一个链表来保存节点,以实现二叉树的顺序插入,具体做法如下: 1.0 初始化一个用来保存二叉树节…
#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struct node *lchild,*rchild; }BinTNode,*BinTree; Status CreateBiTree(Bin…
近期研究了一下二叉树,试着用Java语言实现了二叉树的基本操作,下面分享一下实现代码: package com.sf.test; import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; public class TreeMain { public static void main(String[] agrs) { int[] arr = {5,17,15,19,4,8,7,10,9,14,16};…
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int Status; typedef char ElemType; typedef struct BTNode{//定义树节点…
今天走进数据结构之二叉树 二叉树的基本操作(C 语言版) 1 二叉树的定义 二叉树的图长这样: 二叉树是每个结点最多有两个子树的树结构,常被用于实现二叉查找树和二叉堆.二叉树是链式存储结构,用的是二叉链,本质上是链表.二叉树通常以结构体的形式定义,如下,结构体内容包括三部分:本节点所存储的值.左孩子节点的指针.右孩子节点的指针. struct TreeNode {//树的结点 int data;//数据域 struct TreeNode* lchild;//指向左孩子节点 struct Tree…
大二时候写的烂代码,翻出来复习复习(o(╯□╰)o). 代码: #include <stdio.h> #include <stdlib.h> #define Max_Size 100 struct Binode{ char res; struct Binode *lchild,*rchild; }; struct Binode* First_Creat_Bitree(){//建立一棵二叉树 char ch; struct Binode *p; scanf("%c"…
实现二叉树的创建(先序).递归及非递归的先.中.后序遍历 请按先序遍历输入二叉树元素(每个结点一个字符,空结点为'='): ABD==E==CF==G== 先序递归遍历: A B D E C F G 中序递归遍历: D B E A F C G 后序递归遍历: D E B F G C A 层序递归遍历: ABCDEFG 先序非递归遍历: A B D E C F G 中序非递归遍历: D B E A F C G 后序非递归遍历: D E B F G C A 深度: 请按任意键继续. . . #inc…
#include <iostream> #include <stack> #include <queue> using std::cin; using std::cout; using std::endl; using std::stack; using std::queue; typedef struct node { int data; struct node *lchild; struct node *rchild; }Bnode, *BTree; //创建二叉树…
求二叉树中节点个数: /*1. 求二叉树中的节点个数 递归解法: (1)如果二叉树为空,节点个数为0 (2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1 */ public int GetNodeNum(TreeNode root){ if(root == null) return 0; return GetNodeNum(root.getLeft()) + GetNodeNum(root.getRight()) + 1; } 求二叉树的深度: /*2. 求二…