树算法
yiichan
这个作者很懒,什么都没留下…
展开
-
由二叉树的中序和后序遍历得到先序序列
已知后序与中序输出先序原创 2019-08-04 20:06:02 · 930 阅读 · 0 评论 -
10节点的二叉搜索树样例
下面是一个10节点的二叉搜索树样例,图是用visio画的第一行是节点数,第二行是先序,第三行是中序,最后一行是后序927 18 14 9 25 38 34 42 519 14 18 25 27 34 38 42 519 14 25 18 34 51 42 38 27...原创 2019-08-15 21:07:10 · 873 阅读 · 0 评论 -
1127 ZigZagging on a Tree (30 分)
1127 ZigZagging on a Tree (30 分)Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal s...原创 2019-08-14 20:21:52 · 760 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30 分)
1119 Pre- and Post-order Traversals (30分)Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder tra...原创 2019-08-14 19:16:01 · 281 阅读 · 0 评论 -
二叉树的前序中序、后序中序建树(最简单的算法) 二叉链表结构
去年我做的时候总结过,因为没有发博客,所以又忘了,到网上找,这一个短短的算法都写的特别长,要么建了很多乌七八糟的分支,没必要。我重新翻了翻纸质版笔记,找到了原先的简单算法,在这里发个博客记一下。其实这两种思路很像,都是设置一个返回值为树节点指针的三参数函数,三个参数分别为树长、前序/后序遍历数组、中序遍历数组。首先我设计了下面这个样例,贴上数据和树图71 2 4 3 5 7 64 2 1...原创 2019-08-07 21:41:37 · 1163 阅读 · 0 评论 -
2020王道数据结构 P126 5 非递归算法求二叉树高
进行层序遍历,设置一last指针,保存当前层的最后元素,一旦队首元素等于这个元素,层数+1,last=队尾元素。层数+1:因为到了每一层的最后一个元素,该层将结束,自然需要+1last=队尾元素:层序遍历时,此时的队尾元素正好是下一层的最后一个元素,正好符合last的定义。代码如下#include <bits/stdc++.h>#define N 1005#define...原创 2019-08-09 21:47:42 · 447 阅读 · 0 评论 -
16节点 二叉树测试样例
如题。如图。这阵子写了不少树,但是苦于测试样例不足,不知道正确与否,所以写了个长一些的测试样例。另一个样例在这里二叉树前序中序、后序中序建树,但是只有七个节点。下附节点数和前中后序遍历序列,可以用这个来测试我们的树算法。161 2 4 7 10 11 15 16 3 5 8 12 6 9 13 142 10 7 15 16 11 4 1 8 12 5 3 6 13 9 1410 16 ...原创 2019-08-09 19:51:43 · 708 阅读 · 0 评论 -
1110 Complete Binary Tree (25 分)
1110 Complete Binary Tree (25 分)Given a tree, you are supposed to tell if it is a complete binary tree.Input Specification:Each input file contains one test case. For each case, the first line give...原创 2019-08-13 20:45:10 · 240 阅读 · 0 评论 -
二叉树先序、中序、后序遍历的非递归算法 非递归先序、中序、后序遍历二叉树
//非递归实现中序遍历stack<BiTree*> bs;void preOrderTraversal(BiTree* t) { BiTree *p=t; while (p||!bs.empty()) { if (p) { bs.push(p); p=p->lc; } else { p=bs.top(); bs.pop(); pr...原创 2019-08-07 22:01:15 · 754 阅读 · 0 评论 -
1138 Postorder Traversal (25 分)
1138 Postorder Traversal (25分)一道挺水的题,直接建树做是最简单的一种方法。代码比较好理解,我就不注释了。大意就是先按前序中序遍历结果建树,再进行后序遍历,后序输出第一个元素就结束程序运行。#include <bits/stdc++.h>#define N 50005using namespace std;int pre[N],in[N],cnt,...原创 2019-08-22 20:36:59 · 274 阅读 · 0 评论