摘要: 题目: 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点 阅读全文
posted @ 2019-12-29 17:17 silentteller 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 题目: 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 分析: 层次打印二叉树,在打印二叉树结点的同时,保存好结点的左右孩子,不断的重复打印,直到需要打印的数组为空即可。 程序: C++ class Solution { public: vector<vector<int> > P 阅读全文
posted @ 2019-12-29 15:40 silentteller 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 分析: 实际上是二叉树的层次遍历,只不过每一行输出的方向都是相反的,每遍历二叉树的结点时,都将其内的每一个结点的左右孩子都保存好,设置一个标志,t 阅读全文
posted @ 2019-12-29 15:21 silentteller 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题目: 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 分析: 从根结点开始递归对比左右子树即可。需要注意的是,当前左右两个结点相同比较下面的结点时,由于是判断二叉树是否是对称的,递归执行时,比较的两个结点是当前左结点的左结点和当前右结 阅读全文
posted @ 2019-12-29 14:22 silentteller 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 分析: 二叉树的中序遍历是左根右,所以如果一个结点的右子树不为空,那么这个节点的下一个节点一定是右子树的最左结点,如果右子树不存在左子树的话,就返回右子树的 阅读全文
posted @ 2019-12-29 14:04 silentteller 阅读(216) 评论(0) 推荐(0) 编辑