数据结构和算法再看--二叉树

0、树是递归定义的

1,将一颗树的元素放到一个数组里边是非常容易的,关键是放好之后能不能在数组里边非常容易的找到他们的关系,换句话说就是已知一个节点,我能不能非常容易的找到它的左儿子右儿子,甚至顺着一个节点很容易的找到它的父亲。比如完全二叉树可以用数组表示,但是一般的二叉树在用数组存储在很多时候会造成空间浪费,二叉树更多用链表来存储

2、二叉树最重要的操作就是遍历,二叉树的遍历核心问题:二维结构的线性化

每个节点都有三次碰到的机会,第一次碰到就输出节点内容为先序,第二次碰到访问节点内容为中序,第三次碰到访问节点内容为后序。节点的路线我们是根据递归的方式画出来的,递归的实现最根本的还是借助堆栈来实现,所以我们可以通过堆栈来将递归的方式转化为非递归的方式遍历。

3、借助堆栈来实现中序非递归遍历,访问到最底部左子树节点,然后退一步访问右节点,再接着访问到最底部左子树节点。

第一次碰到节点的时候为push(T),此时访问节点则为先序,第二次碰到节点的时候为pop(T),此时访问节点即为中序,那后序?

4、有两个遍历序列,必须有一个是中序遍历才能确定一个树,只有前序或者后序不能确定。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值