比如下面一棵树 A B CD E F按照DEFBCA的顺序输出,即倒序分层并按照顺序输出。答,其实比较简单。我想到的办法是加一个栈,记录每一层的内容,最后输出。可能比较笨,如果有更好的办法,请告诉我。#include #include struct TreeNode{ ...
分类:
其他好文 时间:
2014-08-22 22:30:39
阅读次数:
265
题目:
链接
解答:
自底向上求解。left_max right_max分别返回了左右子树的最大路径和,如果左右子树最大路径和小于0,那么返回零, 用这个最大路径和和根节点的值相加,来更新最大值,同时, 更新返回该树的最大路径值。
代码:
class Solution {
public:
int max = INT_MIN;
int maxPathSum(TreeNode *...
分类:
其他好文 时间:
2014-08-18 23:39:53
阅读次数:
397
二叉树的创建。这里采用最简单的情况,创建完全二叉树,用数组来保存: 1 struct TreeNode 2 { 3 int val; 4 TreeNode *left, *right; 5 TreeNode(int x): val(x), left(NULL), right(...
分类:
其他好文 时间:
2014-08-18 01:30:03
阅读次数:
332
/// /// 查找指定节点 /// /// 节点 /// 值 /// private TreeNode FindNode(TreeNode tnParent, string strValue) { TreeNode treeNode2 ...
分类:
其他好文 时间:
2014-08-16 18:28:40
阅读次数:
156
#define NULL 0class Solution {public: vector preorderTraversal(TreeNode *root) { stack s; vector v1; if(root!=NULL) s.p...
分类:
其他好文 时间:
2014-08-14 13:35:48
阅读次数:
210
1 class Solution { 2 public: 3 vector postorderTraversal(TreeNode *root) { 4 if(root->left == NULL && root->right == NULL) 5 { 6 ...
分类:
其他好文 时间:
2014-08-13 10:16:05
阅读次数:
168
思路:先序的第一个元素和后序的最后一个元素是当前子树的根,然后遍历中序序列,找到左右子树的分界线,递归建左子树和右子树。
class Solution {
public:
/*由于是oj,这里假设给的序列是合法的,正常情况是需要判断不合法情况的 */
TreeNode *buildTree(vector &inorder, vector &postorder,int instar...
分类:
其他好文 时间:
2014-08-11 21:37:42
阅读次数:
504
75.二叉树两个结点的最低共同父结点(树)题目:二叉树的结点定义如下:struct TreeNode{int m_nvalue;TreeNode* m_pLeft;TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。思路:修改后序遍历 我的方...
分类:
其他好文 时间:
2014-08-08 12:16:25
阅读次数:
275
该题可以用DFS解决,在DFS时记录path,当到达leaf时将path所表示的数加到sum上。 1 class Solution { 2 public: 3 int sumNumbers(TreeNode *root) { 4 vector path; 5 ...
分类:
其他好文 时间:
2014-08-07 18:50:40
阅读次数:
197
与链表、堆栈和队列不一样,二叉查找树不是线性数据结构,是二维数据结构。每个节点都包含一个LeftNode和RightNode,二叉查找树把比节点数据项小的数据放在LeftNode,把比节点数据项大的数据放在RightNode。 关于节点的类。 public class TreeNode { publ...
分类:
其他好文 时间:
2014-08-07 18:33:50
阅读次数:
252