数据结构-- 前序遍历

时间: 2024-10-08 12:05:10

数据结构-- 前序遍历的相关文章

小甲鱼数据结构和算法-----二叉树的构建和前序遍历

题目要求:建立二叉树并输出每个字符所在的层数.如下图要求输出 A 在第一层 B.C 在第二层 D.E在第三层 代码如下: #include <stdio.h> #include <stdlib.h> typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; // 创建一棵二叉树,约定用户遵照前序遍历的方式输入数据 void CreateBiTree(BiTree *T)

数据结构35:二叉树前序遍历、中序遍历和后序遍历

递归算法底层的实现使用的是栈存储结构,所以可以直接使用栈写出相应的非递归算法. 先序遍历的非递归算法 从树的根结点出发,遍历左孩子的同时,先将每个结点的右孩子压栈.当遇到结点没有左孩子的时候,取栈顶的右孩子.重复以上过程. 实现代码函数: // 先序遍历非递归算法 void PreOrderTraverse(BiTree Tree){ BiTNode *a[20]; // 定义一个顺序栈 BiTNode *p; // 临时指针 push(a, Tree); // 根结点进栈 while (top

多杈树的邻接矩阵实现--插入、删除、前序遍历

分支任意的树构造的方法主要有两种,邻接矩阵和兄弟链表.邻接矩阵主要用于输入的范围很小的情况,因为矩阵反应的是对应情况,比如树的每一个节点都给与对应顺序的编号的话,如果有100个输入,就需要一个100*100的数组来存储联接关系. 链表的形式一般用于输入量很大的情况,可以很方便的适应.(需要仔细体会一下区别) 邻接矩阵的使用方法: 邻接矩阵的行数代表父节点ID,每一行用来存储其各子节点ID.比如 0 节点下面添加了一个子节点1的话,就需要在数组的第0行的第Tree(邻接数组名)[0]的位置上写入1

非递归前序遍历

问题:对一个二叉搜索树进行前序遍历,打印出每个结点的值,但是不能使用递归. 解题: (1)递归可以用迭代来替代 (2)了解递归的前序遍历中发生了什么:①打印出根节点(或子树根节点)的值:②对左子树进行前序遍历:③对右子树进行前序遍历. 递归隐式地使用了一个数据结构栈来存放调用栈上的数据.实际上,递归调用用于隐式地在栈上存储右子树的地址,因此左子树遍历完后,可以继续遍历右子树.每次打印             一个结点,并移动到它的左子树上,它的右子树会首先存放在一个栈上,当没有任何子树时,从一个

Leetcode:二叉树的前序遍历

Leetcode: 二叉树的前序遍历 最近在复习数据结构, 感觉很多东西都忘得的差不多了,哪怕是看完书再看视频,还是容易忘,所以干脆想着配合leetcode来刷吧,Python实现起来很简单,但是C语言也不能丢,所以C语言和Python一起吧. 题目: 给定一个二叉树,返回它的前序遍历. 输入: [1,null,2,3] 1 2 / 3 输出: [1,2,3] Python 实现 # Definition for a binary tree node. # class TreeNode(obje

6-5、6、7... 二分搜索树的查询操作、前序遍历

二分搜索树的contains方法实现逻辑如下: 1 // 看二分搜索树中是否包含元素e 2 public boolean contains(E e){ 3 return contains(root, e); 4 } 5 6 // 看以node为根的二分搜索树中是否包含元素e, 递归算法 7 private boolean contains(Node node, E e){ 8 9 if(node == null) 10 return false; 11 12 if(e.compareTo(nod

二叉树——前序遍历、中序遍历、后序遍历、层序遍历详解(递归非递归)

前言 前面介绍了二叉排序树的构造和基本方法的实现.但是排序遍历也是比较重要的一环.所以笔者将前中后序.和层序遍历梳理一遍. 了解树的遍历,需要具有的只是储备有队列,递归,和栈.这里笔者都有进行过详细介绍,可以关注笔者数据结构与算法专栏.持续分享,共同学习. 层序遍历 层序遍历.听名字也知道是按层遍历.我们知道一个节点有左右节点.而每一层一层的遍历都和左右节点有着很大的关系.也就是我们选用的数据结构不能一股脑的往一个方向钻,而左右应该均衡考虑.这样我们就选用队列来实现. 对于队列,现进先出.从根节

前序遍历和中序遍历树构造二叉树

例子 题目来自LintCode, 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回例如以下的树: 2 / 1 3 代码实现 /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } *

根据二叉树的前序遍历和中序遍历重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(