![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
vxkangkang
这个作者很懒,什么都没留下…
展开
-
二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像void MirrorRecursively(BinaryTreeNode* pHead){ if(pHead==NULL)return; //如果左右孩子均为空,则直接返回 if(pHead->m_pLeft==NULL&&pHead->m_pRight==NULL)return; //交换根节点的左右孩子 BinaryTr原创 2017-04-18 20:58:37 · 363 阅读 · 0 评论 -
判断二叉树是不是对称的
面试题59:请实现一个函数,用来判断一颗二叉树是不是对称的,如果一颗二叉树和他的镜像一样,那么他是对称的。//对称的二叉树bool isSymmetric(BinaryTreeNode* pRoot1,BinaryTreeNode* pRoot2){ if(pRoot1==NULL&&pRoot2==NULL) return true; if(pRoot1==NULL||pRoot原创 2017-04-20 08:58:07 · 254 阅读 · 0 评论 -
按之字形打印二叉树
面试题61:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。//按之字形顺序打印二叉树void print(BinaryTreeNode* pRoot ){ printf("进入该方法"); if(pRoot==NULL) return ; std::stack levels[2]原创 2017-04-20 08:53:48 · 263 阅读 · 0 评论 -
二叉搜索树第k大个节点
面试题63:给定一颗二叉搜索树,请找出其中的第k大的节点//二叉搜索树的第k大节点BinaryTreeNode* getKthNode(BinaryTreeNode* pRoot,int &k){ if(pRoot==NULL||k==0) return NULL; //左子树 BinaryTreeNode* target=NULL; if(pRoot->m_pLeft) t原创 2017-04-19 22:33:55 · 1602 阅读 · 0 评论 -
判断二叉树是否是平衡树
面试题39:输入一颗二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中节点的左右子树的深度相差不超过1,那么它就是一颗平衡二叉树//判断二叉树是不是平衡树bool isBalanced(BinaryTreeNode* pRoot,int &height){ if(pRoot==NULL){ height=0; return true; } int leftHeigh原创 2017-04-19 22:29:37 · 298 阅读 · 0 评论 -
二叉搜索树与双向链表
面试题27:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。void convertNode(BinaryTreeNode* pNode,BinaryTreeNode** pLastNodeInList){ if(pNode==NULL) return; BinaryTreeNode* pCurrent=pNode;原创 2017-04-19 22:25:21 · 189 阅读 · 0 评论 -
二叉树中和为某一值的路径
面试题25:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。void findPath(BinaryTreeNode* pRoot,int exceptedSum,std::vector &path,int currentSum){ currentSum+=pRoot->m_nValue; path.push原创 2017-04-19 22:19:45 · 227 阅读 · 0 评论 -
根据中序和前序遍历构建二叉树
面试题6:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历都不含重复的数字BinaryTreeNode* constructCore(int* startPreOrder,int* endPreOrder,int* startInOrder,int* endInOrder){ int rootValue = startPreOrder[0]; Bin原创 2017-04-19 17:40:50 · 250 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
面试题24:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同//二叉搜索树的后序遍历序列bool verifySquenceOfBST(int sequence[],int length){ if(sequence==NULL||length==0)return false; int i=0;原创 2017-04-19 11:12:31 · 207 阅读 · 0 评论 -
求二叉树的下一个节点
面试题58:给定一颗二叉树和其中一个节点,如何找出中序遍历顺序的下一个节点?树中的节点除了有两个分别指向左右子节点的指针以外,还有一个指向父节点的指针//取二叉树的下一个节点BinaryTreeNode* getNext(BinaryTreeNode* pNode){ if(pNode==NULL)return NULL; if(pNode->m_pRight){ BinaryTre原创 2017-04-20 09:06:46 · 269 阅读 · 0 评论