“ Ctrl AC!一起 AC!”

目录

树的引子

概述

树与生活

查找概述

顺序查找

二分查找

树的概述

树的基本术语

树的表示

二叉树

概念及形态

二叉树的性质

二叉树的抽象数据类型​

二叉树的储存结构

顺序存储:

链表存储:

二叉树的遍历

1.先序的递归遍历:

2.中序的递归遍历:

3.后序的递归遍历:

4.中序非递归遍历:

5.先序的非递归遍历:

6.后序的非递归遍历:

7.层序遍历:

树的应用实例

1.找叶子结点:

2.求树的高度:

3.二元运算:

4.三序知二序确定唯一树


树的引子

概述

树与生活

查找概述

顺序查找

二分查找

二分模板(更多模板见More model)

树的概述

树的基本术语

树的表示

二叉树

概念及形态

二叉树的性质

二叉树的抽象数据类型

二叉树的储存结构

顺序存储:

链表存储:

链表存储的代码描述:

typedef struct TreeNode* BinTree;
struct TreeNode{ElementType Data;BinTree Left;BinTree Right;
}

二叉树的遍历

1.先序的递归遍历:

代码描述:

void PreOrderTraversal(BinTree BT){if(BT){printf("%d",BT->Data);PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);}
}

2.中序的递归遍历:

代码描述:

void PreOrderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);printf("%d",BT->Data);PreOrderTraversal(BT->Right);}
}

3.后序的递归遍历:

代码描述:

void PreOrderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);printf("%d",BT->Data);}
}

4.中序非递归遍历:

代码描述:

void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S=CreatStack(MaxSize);while(T||!IsEmpty(S)){while(T){Push(S,T);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);printf("%5d",T->Data);T=T->Right;}}
}

5.先序的非递归遍历:

void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S=CreatStack(MaxSize);while(T||!IsEmpty(S)){while(T){printf("%5d",T->Data);Push(S,T);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);T=T->Right;}}
}

6.后序的非递归遍历:

void Post_order(tree L){tree p=L;Stack s=CreateStack(MaxSize);Stack result=CreateStack(MaxSize);while(p||!IsEmpty(s)){while(p){push(s,p);push(result,p);          p=p->right;}if(!IsEmpty(s)){p=pop(s);p=p->left;}}while(!IsEmpty(result)){p=pop(result);printf("%5d",p->data);}
}

7.层序遍历:

代码描述:

void LevelOrderTraversal(BinTree BT){Queue Q; BinTree T;if(!BT) return;Q=CreatQueue(MaxSize);AddQ(Q,BT);While(!IsEmptyQ(Q)){T=DeleteQ(Q);printf("%d\n",T->Data);if(T->Left) AddQ(Q,T->Left);if(T->Right) AddQ(Q,T->Right);}
}

树的应用实例

1.找叶子结点:

2.求树的高度:

3.二元运算:

4.三序知二序确定唯一树

根据前中序或中后序遍历情况可求的唯一确定的二叉树。

感谢阅读!!!

“ Ctrl AC!一起 AC!”

S5_笔记(树,二叉树)相关推荐

  1. 数据结构笔记6: 二叉树和其他树

    树的一般定义 树 线性表.表:不适合描述层次结构数据 树(tree):是一个非空的有限元素的集合,其中有一个特殊的元素称为根,余下的元素组成树的若干子树 递归的思想:每棵树=根+若干棵子树,每棵子树= ...

  2. 清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示

    清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示 有关概念: 与图论略有不同,数据结构中的树:1.需要为每一颗树指定一个特殊的顶点,作为"根"(root),对应rooted ...

  3. 《大话数据结构》读书笔记-树

    写在前面:本文仅供个人学习使用.<大话数据结构>通俗易懂,适合整体做笔记输出,构建体系.并且文中很多图片来源于该书,如有侵权,请联系删除. 文章目录 6.2 树的定义 6.2.1 结点分类 ...

  4. 树-二叉树、满二叉树和完全二叉树

    树-二叉树.满二叉树和完全二叉树 二叉树的定义: (1)当n=0时,为空树: (2)当n>0时,是由一个根结点和称为根结点的左.右子树构成,并且两颗子树互不相交. 满二叉树: 对于一棵二叉树,如 ...

  5. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  6. 数据结构树二叉树计算节点_查找二叉树中叶节点的数量 数据结构

    数据结构树二叉树计算节点 Algorithm: 算法: One of the popular traversal techniques to solve this kind of problems i ...

  7. 二叉查找(排序)树/二叉树----建树,遍历

    二叉查找(排序)树/二叉树----建树,遍历 import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...

  8. 数据结构c语言版二叉树的顺序存储表示,数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念...

    内容预览 零.读前说明一.二叉树相关概念1.1.定义1.2.性质1.3.满二叉树与完全二叉树1.3.1.满二叉树1.3.2.完全二叉树1.3.3.特点延伸 二.二叉树储存结构2.1.顺序结构存储2.2 ...

  9. 数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念

    内容预览 零.读前说明 一.二叉树相关概念 1.1.定义 1.2.性质 1.3.满二叉树与完全二叉树 1.3.1.满二叉树 1.3.2.完全二叉树 1.3.3.特点延伸 二.二叉树储存结构 2.1.顺 ...

  10. java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)

    常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...

最新文章

  1. js if for 详解 获取元素方式 及一些js 基础知识
  2. 顶尖科技棋牌游戏开发_如何接受顶尖科技公司的采访
  3. Leetcode--16. 最接近的三数之和
  4. Go 语言本身提供的包管理机制
  5. 转载:AD的授权还原和主还原:深入浅出Active Directory系列(六)
  6. Sonar+Hudson+Maven构建系列之三:安装Hudson
  7. lvuaagentinstbaseroot_桌面小助手UniAgent删除指南
  8. C# 绘制CIE1931彩色马蹄形图大家自己斟酌
  9. android 水晶报表,水晶报表分组,统计,求和,sum()函数使用
  10. 个人作业--数组之首尾相连
  11. Ble低功耗蓝牙和蓝牙mesh网络之间的关系
  12. 组合投资的风险与收益概述
  13. 论文笔记:图像分割——ExFuse DFN
  14. python中str函数用法_python中str内置函数用法总结
  15. 微生物组-宏基因组分析专题研讨会(2022.8)
  16. 国威电话交换机如何设置加拨17909IP功能
  17. 儿童节到了!让 GitHub 上这几个小游戏帮你找回童真吧!
  18. Netty使用FileUpload报错Not represented by a file
  19. 你知道 Compiler 与 Interpreter 的区别吗?
  20. 英语软件那些好玩的功能你知道吗

热门文章

  1. python使用panda3d制作飞行模拟器
  2. 前端面试你需要知道的事情:技术面试流程
  3. Linux组的相关概念
  4. python assert使用
  5. 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
  6. ACCESS 2003数据库的创建
  7. 高通dw9800W_actuator流程总结
  8. c语言char什么意思 新闻,关于C ++:char *是什么意思
  9. 【STM8S】STM8S之内外部16M晶振
  10. Websocket是什么