栈模拟非递归算法递归算法的本质是利用函数的调用栈进行,实际上我们可以自行使用栈来进行模拟,这样的算法空间复杂度为O(h),h为二叉树的高度。前序遍历首先把根节点入栈,然后在每次循环中执行以下操作:此时栈顶元素即为当前的根节点,弹出并打印当前的根节点。把当前根节点的右儿子和左儿子分别入栈(注意是右儿子...
分类:
编程语言 时间:
2015-08-30 11:07:19
阅读次数:
220
前序遍历:结点->左子树->右子数中序遍历:左子树->结点->右子数//同一个结点及其后代中,左子树优先级最高后序遍历:左子树->右子数->结点
分类:
其他好文 时间:
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
二叉树的重建几乎所有的人都知道二叉树可以根据前序遍历+中序遍历或者后序遍历+中序遍历的方式重新建立原来的二叉树,并且结果是唯一的。下面就来看一下相关的方法。前序+中序重建二叉树给定一棵二叉树的前序和中序遍历序列,重新建立这棵二叉树。注意:在前序中确定了根节点以后,要去中序里面查找这个根节点,这时的查...
分类:
其他好文 时间:
2015-08-29 16:38:27
阅读次数:
189
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 1 /** 2 * Definition for binar....
分类:
其他好文 时间:
2015-08-25 18:47:12
阅读次数:
91
满二叉树:节点数为2的指数次个数的二叉树完全二叉树:节点与满二叉树一一对应的二叉树。满二叉树是完全二叉树的一种。树的遍历:前序遍历、中序遍历、后序遍历,它们访问节点的顺序不同。1前序 :访问节点、左孩子,右孩子2中序 :左孩子,访问节点,右孩子3后序 :左孩子,右孩子,访问节点由遍历序号确定二叉树:...
分类:
其他好文 时间:
2015-08-21 21:14:55
阅读次数:
192
总结: 重建二叉树:其实就是根据前序和中序重建得到二叉树,得到后续,只要输出那边设置输出顺序即可[编程题]重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{....
分类:
其他好文 时间:
2015-08-20 22:25:18
阅读次数:
245
【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)(未完成)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given a binary tree, return the preorder traversal of its nodes’ values.
For example:
Given binary tree...
分类:
编程语言 时间:
2015-08-19 08:15:39
阅读次数:
869
一道HULU的笔试题(How I wish yesterday once more)假设有棵树,长下面这个样子,它的前序遍历,中序遍历,后续遍历都很容易知道。PreOrder: GDAFEMHZInOrder: ADEFGHMZPostOrder: AEFDHZMG现在,假设仅仅知道前序和中...
分类:
其他好文 时间:
2015-08-17 21:32:22
阅读次数:
121
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
//递归前序遍历
void PreOrder(BinaryTreeNode* pNode)
{
if(pNode!=NULL)
{
coutm_nValue<<endl;
PreOrder(pNod...
分类:
编程语言 时间:
2015-08-16 12:17:13
阅读次数:
136