思路:将p入栈并访问p.val,遍历左子树;遍历完左子树返回时,栈顶元素应为p,出栈,再先序遍历p的右子树。代码:/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * ...
分类:
其他好文 时间:
2015-12-30 00:23:06
阅读次数:
212
注:树的深度优先遍历就是二叉树的先序遍历.下面是代码. 1 package tooffer; 2 3 import java.util.LinkedList; 4 import java.util.Stack; 5 6 public class TreeNode { 7 int val ...
分类:
其他好文 时间:
2015-12-17 20:41:52
阅读次数:
163
Split Windows题目链接:http://poj.org/problem?id=1108题目大意: 给你一棵二叉树的先序遍历,有三种字符:|、-、A~Z,然后用窗口表示出来,|: 表示将当前窗口分为左右两半;-: 表示将当前窗口分为上下两半;A~Z: 为当前窗口命名。初始状态为一个大窗口,比...
图采用了邻接表的形式储存。带不带权都无所谓的深度优先搜索 Depth First Search道理和树的先序遍历差不多,把将要访问的点入栈,然后从栈里取点进行访问。由于这只是类中的一个成员函数,有些被调用的函数的具体代码将会在文章最后补上 ,但是函数功能看注释就好了 1 //深度优先 2 void ...
分类:
其他好文 时间:
2015-12-08 23:57:18
阅读次数:
474
生成括号给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例给定n = 3, 可生成的组合如下:"((()))", "(()())", "(())()", "()(())", "()()()"嗯。。想了半天。其实可以当作一个先序遍历二叉树的问题。根节点是'(',左孩子都是'...
分类:
其他好文 时间:
2015-12-04 20:33:04
阅读次数:
129
http://acm.hdu.edu.cn/showproblem.php?pid=1710题意:给二叉树的先序遍历和中序遍历,确定后序遍历解法:复习专业课找的一题,根据先序遍历和中序遍历建树,再对树做后序遍历#include #include using namespace std;struct ...
分类:
其他好文 时间:
2015-11-28 23:18:59
阅读次数:
445
1.要理解回溯就必须清楚递归的定义和过程。 递归算法的非递归形式可采用回溯算法。主要考虑的问题在于:怎样算完整的一轮操作。执行的操作过程中怎样保存当前的状态以确保以后回溯访问。怎样返回至上一次未执行的操作。2.贴代码表现:先序遍历二叉树:BTNode *FindNode(BTNode *b,Elem...
分类:
编程语言 时间:
2015-11-28 06:37:01
阅读次数:
157
直接上代码,有空解释注意这种建树方式为先序建立sampleinputABD*F***CE***输出先序遍历结果ABDFCE中序遍历结果DFBAEC后序遍历结果FDBECA树的深度为4叶节点个数为2#include #include #include #include #include using n...
分类:
其他好文 时间:
2015-11-22 14:05:28
阅读次数:
237
图主要有深度优先遍历(DFS)和广度优先遍历(BFS)。1 深度优先遍历——DFS 深度优先类似于树的先序遍历,从要访问的节点(0)出发,选取和它相邻的任何一个节点(3),访问之,再访问和3相邻的节点(4),访问之,直到访问到没有相邻节点的节点,比如4没有相邻节点了,那么就回溯一层,访问3的未被访....
分类:
其他好文 时间:
2015-10-19 17:00:13
阅读次数:
247
知识:在先序遍历中,第一个结点就是二叉树的根节点;而在中序遍历中,根节点必然将中序序列分割成两个子序列,前一个子序列就是根节点的左子树的中序序列,后一个是根节点的右子树的中序序列。同样,给定后序序列和中序序列,按层次序列和中序序列可以也可以唯一确定一棵二叉树。但是,如果知道二叉树的先序序列和后序序列...
分类:
其他好文 时间:
2015-10-08 16:09:05
阅读次数:
120