Given a binary tree, return thezigzag level ordertraversal of its nodes' values. (ie, from left to right, then right to left for the next level and al...
分类:
其他好文 时间:
2015-10-26 11:46:58
阅读次数:
172
在遍历儿叉树时,常常使用的是递归遍历,或者是借助于栈来迭代,在遍历过程中,每个节点仅访问一次,所以这样遍历的时间复杂度为O(n),空间复杂度为O(n),并且递归的算法易于理解和实现。在遍历过程中,递归遍历过程的空间复杂度却是O(n),就算是转换为使用栈空间迭代时间,还是没有改变算法对额外空间...
分类:
编程语言 时间:
2015-10-22 00:03:25
阅读次数:
326
二叉树前序遍历:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x...
分类:
其他好文 时间:
2015-09-22 21:44:16
阅读次数:
173
递归//递归先序遍历 public static void pre(TreeNode root){ if(root==null) return; visit(root); if(root.left!=null) pre(root.left); ...
分类:
其他好文 时间:
2015-09-21 12:05:20
阅读次数:
116
1. 定义分三种:先序遍历:先访问根节点,然后是左孩子,然后是右孩子(根,左,右)中序遍历:左,根,右后序遍历:左,右,根层次遍历:从根节点开始,从上至下逐层遍历,同一层中,按从左至右顺序遍历2. 递归解法树表现为一种链表结构,链表问题大都可以采用递归实现。树更是常常有递归解法。先、中、后遍历的递归...
分类:
其他好文 时间:
2015-09-19 16:47:52
阅读次数:
211
/*二叉树遍历(递归版本&非递归版本)(1)中序遍历(2)先序遍历(3)后续遍历*/struct BinTree { int data; /*数据域*/ BinTree* leftchild; /*左孩子*/ BinTree* rightchild; ...
分类:
其他好文 时间:
2015-09-13 11:48:50
阅读次数:
125
该问题用递归的思路很好解决,每一次取前序序列的首元素作为当前子树的根节点,然后在中序序列中找到对应的节点,以此可以确定根节点对应的左子树和右子树的序列长度,递归构造根节点的左子树和右子树即可。
TreeNode *execBuild(vector &preorder, int prestart, int preend, vector &inorder, int instart, int inen...
分类:
其他好文 时间:
2015-08-31 19:48:01
阅读次数:
162
前序遍历:结点->左子树->右子数中序遍历:左子树->结点->右子数//同一个结点及其后代中,左子树优先级最高后序遍历:左子树->右子数->结点
分类:
其他好文 时间:
2015-08-29 18:27:13
阅读次数:
131
递归算法
void preorder1(Node *root) //递归前序遍历
{
if (root == NULL) return;
printf("%d ", root->val);
preorder1(root->left);
preorder1(root->right);
}
void inorder1(Node *root) //递归中序遍历
{
if (root == ...
分类:
其他好文 时间:
2015-08-29 17:04:03
阅读次数:
151
现在越发觉得关于树的问题真是千变万化,随便改一个条件又会是一个新的问题。
问题:一棵二叉树每个节点包含一个整数,请设计一个算法输出所有满足条件的路径:此路径上所有节点之和等于给定值。注意此类路径不要求必须从根节点开始。
如果没有最后一个条件,这道题在leetcode上面过,就是采取先序遍历的方式并记录下路径。但是加上最后一个条件后需要转下弯思考一下。
当然也需要记录下...
分类:
其他好文 时间:
2015-08-25 21:42:22
阅读次数:
178