被二叉树遍历逼疯了
这个二叉树中序遍历是真的非常的坑爹
二叉树的遍历
首先,大部分解决方法基本上都是给定二叉树的根节点,然后进行,先,中,后序进行遍历。
成都创新互联公司是专业的斗门网站建设公司,斗门接单;提供成都网站设计、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行斗门网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
不是字面意思上的那种,先就是从头到尾,中就是给定一个中间节点,然后进行前后遍历!,根不是从最后节点开始的。而都是从二叉树的头(根),进行往下遍历开始!
这使我进入了一个误区,我说大部分资料里面的遍历操作为什么那么简洁,短小!原来是这样子弄的。我说为什么没有if判断该节点的父节点是否为null,该节点在父节点的左边还是右边!
如果用我的那种方式进行判断的话,结构会进行很复杂的if判断,是否节点是尾结点,节点下面是否还有子节点,节点上面是否还有父节点,节点是在父节点的左边还是右边(因为如果中序节点的时候,如果给定的节点是在父节点的左边那么它与这个节点在父节点右边时的逻辑完全相反即可)。
并且还要有一种方法进行判断该二叉树是否遍历已经完成。有一种解决方案就是,为结构体(C语言)里面再添加一个元素,用来标识,该节点是否进行了遍历!
递归跟非递归
递归嘛就是多级函数调用,fun(){ fun(){ } } 这样大镜子里面套小镜子无限循环(当然你要设置限制,来能使它跳出循环中。)通过调用递归的方式可以使代码整洁,当然逻辑设计的时候可能比较难一些,因为你要考虑每一个节点在运行这个函数的时候,运行的代码都是一样的!
而非递归就是一个函数里面解决问题。
递归也是循环,只是它的循环程序设计者不用担心,系统会帮你做。
而非递归就是,将递归拆分出来,用循环来实现函数的层叠调用,而每个函数里面的数据用栈来进行存储!
分享题目:被二叉树遍历逼疯了
当前地址:http://scyanting.com/article/poigej.html