摘要:
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 思路:二叉搜索树的中序遍历是递增的序列,使用循环的中序遍历找到第k个节点就行了,对中序遍历的循环版本没理解,使用一个stack,找到最左边的节点 阅读全文
摘要:
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树。 思路:序列化就是将一个数据结构或物体转化为一个位序列,可以存进一个文件或者内存缓冲器中,然后通过网络连接在相同的或者另一个电脑环境中被还原,还原的过程叫做去序列化。 使用C++ ostringstream来格式化字符串输出,使用一次后清空的 阅读全文
摘要:
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路:二叉树的层次遍历。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val( 阅读全文
摘要:
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路:最暴力的方法就是使用队列进行层次遍历,使用sz存储每层的节点个数。然后反转偶数层就可以了。 优化方法:使用两个栈,一个栈存奇数层的结果,按 阅读全文