二叉树理论基础

二叉树的种类、存储方式、’遍历方式以及定义。二叉树2种存储方式:顺序存储,用数组来存;链式存储。相对于链表,链式存储的二叉树节点的定义方式如下:

struct TreeNode{

int val;

TreeNode *left;

TreeNode *right;

TreeNode(int x):val(x),left(NULL),right(NULL) { } };

二叉树的节点里多了一个指针,有2个指针,指向左右孩子。

遍历方式:1 前序遍历(中左右) 2 中序遍历(左中右)3 后续遍历(左右中)

递归算法注意点1、确定递归函数的参数和返回值。2、确定终止条件3、确定单层递归的逻辑

匹配问题都是栈的强项,递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中。

二叉树的迭代遍历。中序遍历左中右(迭代法)和后序遍历(左右中)前序遍历(中左右)的迭代法实现是不一样的。这是因为前序遍历中访问节点和处理节点可以同步处理,但是中序遍历无法做到同步。

二叉树的统一迭代法,中序一会用栈遍历,一会又用指针来遍历,无法解决访问节点和处理节点(将元素放进结果集)不一致的情况。因此,我们可以将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记,就是要处理的节点放入栈之后,紧接着放入一个空指针作为标记。

将访问的节点直接加入到栈中,但是要处理的节点则后面放入一个空节点,这样只有空节点弹出的时候,才将下一个节点放进结果集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值