一些性质:

1.前序遍历第一个元素是root,后序遍历最后一个元素是root,中序遍历root的左边元素是左分支,右边元素是右分支;
2.已知前中遍历,或者中后遍历可确定二叉树,前后不行;
3.二叉搜索树中序遍历有序;
4.如果t1是t2的子树,那么t1序列化的结果是t2序列化的子序列;

遍历:

1.递归前序

vector<int> res;
void preorder(Treenode* root){if(root==NULL) return; //这里也可以对res操作,但注意要returnres.push_back(root->val);preorder(root->left);  //注意先左后右preorder(root->right);
}

2.递归中序

vector<int> res;
void preorder(Treenode* root){if(root==NULL) return; //这里也可以对res操作,但注意要returnpreorder(root->left);  //注意先左后右res.push_back(root->val);preorder(root->right);
}

3.递归后序

vector<int> res;
void preorder(Treenode* root){if(root==NULL) return; //这里也可以对res操作,但注意要returnpreorder(root->left);  //注意先左后右preorder(root->right);   res.push_back(root->val);
}

4.层序遍历BFS

vector<int> res;
void bfs(Treenode* root){if(root==NULL) return res;deque<Treenode*> q;q.push(root);while(!q.empty()){int s=q.size();  //q的size在for循环中会变,注意刚开始就求Treenode* temp;for(int i=0;i<s;++i){temp=q.front();q.pop();res.push_back(temp);if(temp->left) q.push(temp->left); //注意先左后右if(temp->right) q.push(temp->right);    }}
}

5.借助栈

来自leetcode https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/dong-hua-yan-shi-94-er-cha-shu-de-zhong-xu-bian-li/

**

应用:

**
1.求树深度

int height(Treenode* root){if(root==NULL) return 0;int left=height(root->left);int right=height(root->right);return max(left,right)+1;
}

或者用BFS每一层加一的方法
2.二叉树很多用递归的,后面再补充吧

二叉树遍历及遍历性质相关推荐

  1. 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)

    目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...

  2. 二叉树先序遍历,中序遍历,后序遍历,层次遍历学习总结及完整C/C++代码

    伪代码阐述 先序遍历 先序遍历:先访问根节点, 然后深入左子树,直到不能深入时再深入右子树 由定义可得递归式 void travPre_R(BinNodePosi* x,VISIT& visi ...

  3. 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  4. LeetCode-144:二叉树的前序遍历

    题目描述: 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 输入:root = [1,null,2,3] 输出:[1,2,3] 思路分析: 递归或是迭代实现. 递归: 首先我们需要了解什 ...

  5. 数据结构(二十)二叉树的递归遍历算法

    一.二叉树的遍历的定义 1.二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问依次且仅被访问依次.树的结点之间不存在 ...

  6. 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS

    图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...

  7. 【算法笔记】二叉树之基础遍历

    基础知识 一. 二叉树的种类 二叉树主要分为满二叉树.完全二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树.深度为k的满二叉树,有2k ...

  8. 32、用队列实现层序遍历-102.二叉树的层序遍历

    题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 思路:之前在剑指Offer中做过 使用队列先入先出的性质,实现层序遍历! DFS(深度优 ...

  9. 二叉树、前序遍历、中序遍历、后序遍历

    一.树 在谈二叉树前先谈下树和图的概念 树:不包含回路的连通无向图(树是一种简单的非线性结构) 树有着不包含回路这个特点,所以树就被赋予了很多特性 1.一棵树中任意两个结点有且仅有唯一的一条路径连通 ...

  10. 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先

    前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...

最新文章

  1. shiro处理ajax请求未登录,shiro处理ajax请求session失效跳转
  2. QT4到QT5的变化!
  3. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
  4. NYOJ 905 卡片游戏
  5. 不写程序改当老板 留给IT圈一个销魂的背影
  6. 在Qt Creator以外编写Qt程序
  7. Linux——VIM中代码的折叠和打开
  8. 傅里叶变换的更多性质:相位展开、零相位窗等
  9. mysql jpa 正则_Spring Data JPA 实例查询
  10. 阿里取消周报!但普通数据人的周报、月报焦虑,谁来拯救?
  11. 学校网络安全事故救助机制初探
  12. php 期望参数1为资源,php – imagesx()期望参数1是资源,给定布尔值
  13. 实习成长之路:MySQL四:深入浅出索引
  14. 取消android所有动画,android – 动画取消动画
  15. Gnutella 及无结构化(非结构化)P2p的一些总结
  16. opengl 五角星画法 源代码
  17. js字符串时间格式与中国标准时间格式相互转换
  18. 域服务器无法修改域账户密码,域用户使用Ctrl+Alt+del不能修改密码
  19. 统计学之离散指标(全距、内距、异众比率、平均差与标准差)
  20. 商用密码应用与安全性评估之(四)密码应用安全性评估实施要点

热门文章

  1. 记一次安装开源kafka_2.12-2.8.0 + SCRAM-SHA-256 认证
  2. [入门]树(treeview)控件制作导航的做法(三)
  3. 利用aspose实现ppt,doc,docx,pptx,xlsx,xls,txt,图片类型转pdf以及实现在线预览(可用于window和linux上,无水印)
  4. 基于MIMICS的口腔模型的配准
  5. better-scroll + fastclick 轮播图在pc端方案
  6. 深度学习||写论文思路整理||论文阅读的技巧
  7. Winform 中panel的mousewheel鼠标滚轮事件触发
  8. 如何计算数组元素个数?
  9. Vmware EXSI安装Unbuntu系统
  10. Python算法练习(五)// 算法:KMeans,数据集:标准普尔500指数