递归 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode...
分类:
其他好文 时间:
2014-09-04 22:16:00
阅读次数:
228
1: 递归public class Solution { public boolean isSymmetric(TreeNode root) { if(root == null) return true; return isTwoTreeSymmet...
分类:
其他好文 时间:
2014-09-04 01:32:37
阅读次数:
194
#include #include #include using namespace std;struct TreeNode { struct TreeNode* left; struct TreeNode* right; char elem; ...
分类:
其他好文 时间:
2014-09-03 00:08:45
阅读次数:
285
一、二叉树 1、定义 二叉树是一棵树,其中每个节点都不能多于2个儿子。 2、实现 typedef struct TreeNode *PtrToNode;typedef PtrToNode Tree;typedef char ElementType;struct TreeNode{ ElementTy...
分类:
其他好文 时间:
2014-09-01 13:49:03
阅读次数:
157
这道题一眼看上去就是一个递归的算法,对于一棵树,分三种情况,包括根、仅左子树、仅右子树,递归的确认最大值,其中第一种情况(路径中包含根)分析可知它会一直包含根,后两中就复杂点,需要一直递归处理每颗子树。代码如下:int maxPathSumWithRoot(TreeNode *root) { if ...
分类:
其他好文 时间:
2014-08-30 21:43:10
阅读次数:
307
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树。
struct TreeNode
{
int data;
TreeNode* leftChild;
TreeNode* rightChild;
};
void newNode(TreeNode*& vNode, int vData)
{
vNode...
分类:
其他好文 时间:
2014-08-30 02:24:58
阅读次数:
260
# Definition for a binary tree nodeclass TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclas...
分类:
其他好文 时间:
2014-08-29 17:36:18
阅读次数:
135
class Solution {private: vector nodes;public: void recoverTree(TreeNode *root) { nodes.clear(); dfs(root); // 1 5 3 4 2 6 7...
分类:
其他好文 时间:
2014-08-25 01:07:23
阅读次数:
329
解题的关键在于这条路径只能是先往上走,到达某个最高点,再往下走,换句话说,只能有一次转折的机会。所以递归这棵树,记录以某个子节点为转折点时的最大值。值得注意的是树节点的值有负值,所以如果某个子路径的和小于0,放弃它(设置和为0)。
class Solution {
public:
int maxPathSum(TreeNode *root) {
int maxSum = -1 <...
分类:
其他好文 时间:
2014-08-23 10:01:00
阅读次数:
167
基本模仿CC150上的思路,递归地在t1中寻找能与t2的根相同的节点,作为开始比较的开始点,然后递归的比较两个树是否相等。boolean containsTree(TreeNode t1, TreeNode t2){ if(t2==null) return true; ...
分类:
其他好文 时间:
2014-08-22 22:32:39
阅读次数:
457