首页 > 其他分享 >二叉树遍历

二叉树遍历

时间:2024-11-08 15:57:46浏览次数:1  
标签:左子 遍历 中序 访问 二叉树 节点

二叉树遍历这个问题,以前一直没搞懂,只是模糊的了解。
先序遍历:先访问根节点,再从左到右依次访问各子树。ABDECFG
中序遍历:先访问左节点,再访问根节点,最后再访问右节点。DBEACGF
后序遍历:先从左到右遍历各棵子树,再访问根节点。DEBGFCA
先中后实际上对应的是根遍历的位置。
层次遍历:按层次从小到大逐个访问,同一层次按照从左到右。ABCDEFG

这里中序难度要稍微大些,就以中序举个例子。
中序遍历:先访问左节点,再访问根节点,最后再访问右节点。DBEACGF
中序难一些,就以中序举例,获取序列。
1、从根节点开始往下查找,A有左子树B,B也有左子树D,D没有左子树,输出D
2、回头找到根节点B,输出B,查到B的右节点E,E没有左右子树,输出E
3、回头找到A,输出A,查到A的右节点C,C没有左子树,输出C
4、查到C的右子树F,F有左节点G,输出G,回头输出F
总结一句话:有左子树的时候,要先拿左子树。

确定二叉树:
已知前序遍历和中序遍历,可以确定唯一一棵二叉树。
确定方式:利用先序遍历确定根结点,再利用中序遍历划分左右子树。
已知后序遍历和中序遍历,可以确定唯一一棵二叉树。
确定方式:利用后序遍历确定根结点,再利用中序遍历划分左右子树。
已知前序遍历和后序遍历,不可以确定唯一一棵二叉树。

先序遍历:先访问根节点,再从左到右依次访问各子树。ABDECFG
中序遍历:先访问左节点,再访问根节点,最后再访问右节点。DBEACGF
如上已知先序和中序,先确定二叉树。
1、先序确定根节点,第一个根节点为A。则根据中序,得到A的左子树有DBE,A的右子树有CGF。
2、DBE进行下层拆解。根据先序BDE,得到根节点为B,通过中序,B的左子树D,右子树E。
3、CGF进行下层拆解。根据先序CFG,确定根节点为C,通过中序,C的左子树空,右子树GF。
4、GF进行下层拆解。根据先序FG,F为根节点。根据中序,F的左子树为G,右子树空。




标签:左子,遍历,中序,访问,二叉树,节点
From: https://www.cnblogs.com/danlis/p/18535259

相关文章

  • 二叉树 (王道数据结构 C语言版)
    2004.11.04计算一颗给定二叉树的所有双分支节点个数编写把一个树的所有左右子树进行交换的函数求先序遍历中第k个结点的值(1<=k<=二叉树中的结点个数)#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;typedefstructBitnode{......
  • 二叉树的递归遍历和迭代遍历
    递归每次写递归,都按照这三要素来写,可以保证大家写出正确的递归算法!确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件:写完了递归算法,运行的时......
  • 华为OD机试真题-数组二叉树码-2024年OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述二叉树也可以用数组来......
  • 数据结构 ——— 链式二叉树oj题:相同的树
    目录题目要求手搓两个链式二叉树代码实现 题目要求给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。手搓两个链式二叉树代码演示://数据类型typedefintBTDataType;......
  • 数据结构 ——— 计算链式二叉树第k层的节点个数
    目录链式二叉树示意图手搓一个链式二叉树计算链式二叉树第k层的节点个数 链式二叉树示意图手搓一个链式二叉树代码演示://数据类型typedefintBTDataType;//二叉树节点的结构typedefstructBinaryTreeNode{BTDataTypedata;//每个节点的数据s......
  • 代码随想录算法训练营第十八天|leetcode530.二叉搜索树的最小绝对差、leetcode501.二
    1leetcode530.二叉搜索树的最小绝对差题目链接:530.二叉搜索树的最小绝对差-力扣(LeetCode)文章链接:代码随想录视频链接:你对二叉搜索树了解的还不够!|LeetCode:98.验证二叉搜索树_哔哩哔哩_bilibili思路:定义一个极大值作为结果,然后在中序遍历过程中进行比较出结果1.1自己的......
  • 数据结构树与二叉树
    语雀链接:https://www.yuque.com/g/wushi-ls7km/ga9rkw/qw8kwzxigbx61kxy/collaborator/join?token=2vdSjDBgJyJb0VSL&source=doc_collaborator#《树与二叉树》......
  • 实验4:二叉树的基本操作
    c++解释:new相当于malloc()函数,其他没有区别!点击查看代码#include<iostream>usingnamespacestd;structtree{ intdata; tree*light,*ture;};intjie,shen,maxx;//创建tree*chu(){ tree*head; head=newtree; cout<<"请输入数值:\n"; cin>&g......
  • bfs(宽度搜索遍历)
    当边权为1时候,用bfs解决最短路问题题目:走迷宫给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该......
  • DFS(深度优先遍历)
    基础:排列数字给定一个整数 n,将数字1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:12313221323......