题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的节点,只能调整树中节点指针的指向。 解题思路:中序遍历就可解决。小->中->大 void doublelist(bTree *p,bTree **tail) //tail 为当前末尾的节点 { if(!p) return ; if(p->left) doublelist(p->left,tail); bTree *cur=p; cur->left=*tail; if(*tail!=NULL) *tail->right=... Read More
posted @ 2013-08-31 14:05 icfnight Views(175) Comments(0) Diggs(0) Edit
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是,返回true,否则返回false。假设输入的数组任意两个数字都互不相同。解题思路:涉及到二叉树的问题,一般可以这样处理:找到根结点,把该树拆分成左、右子树,继续处理子树,这就变成了一个递归的过程。本题感觉不存在高深的算法,那么可以归结为找规律题,画些草图,不难发现序列的最后一个点即为树的根节点。bool judge(int a[],int len){ if(a==nuLL||len0) left=judge(a,i); bool right=true; if(i<len... Read More
posted @ 2013-08-31 12:08 icfnight Views(236) Comments(0) Diggs(0) Edit