数据结构
文章平均质量分 78
QiuYang18
这个作者很懒,什么都没留下…
展开
-
判断一棵二叉树是否为另一棵二叉树的子结构(JAVA版本)
分析:判断root1是否为root2的子树?首先,必须先找到树1中与树2的根节点相同的节点,然后判断从该节点开始root1中是否root2的结构;若有,则返回true,若没有,则返回false?答案是No! 因为二叉树root1中可能含有值相同的节点,所以,如果没有找到,就需要继续遍历root1. Way: 先设计一个函数,isSame(root1,root2)判断给定相同根节点的两子树是否一样原创 2017-02-27 20:09:00 · 771 阅读 · 0 评论 -
由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现
最近看了一道面试题目,觉得很有意思,而且常常被问到,今天综合归纳了一下这道题目,并给出了各种变形题目,附上JAVA版的程序解答。 题目是这样的:寻找二叉树的最低公共祖先?(其中隐含着一个盲点:树是什么树?排序二叉树、普通二叉树、或者不是二叉树?)所以要分别考虑哈各种情况哈 形式一:当树为二叉排序树,如何寻找给定两节点的最低公共祖先? 形式二:当树为普通树,但每个节点中有指针指向其父节点,原创 2017-02-27 20:34:38 · 1600 阅读 · 0 评论 -
二叉树的非递归遍历---JAVA实现
二叉树的递归遍历方式是很简单的,当需要用非递归的方式遍历时,就需要借助栈这种数据结构,以前序遍历为例,其定义为先访问根节点,再以前序方式访问左子树,再以前序遍历方式访问右子树,这是个递归的定义。对于前序遍历,最先访问的是根,然后是根左边的孩子,在继续访问孩子的左边孩子,走到底部,再从底部开始倒退回来,逐渐访问右边孩子,很自然的想到使用栈这种数据结构......(可以画一个二叉树看看其前序遍历的过程原创 2017-03-13 09:24:04 · 580 阅读 · 1 评论