摘要: void connect(TreeLinkNode *root) { while (root) { //每一层循环时重新初始化 TreeLinkNode *prev = nullptr; TreeLinkNode *next = nullptr; //对于每一层 for (; root; root 阅读全文
posted @ 2016-06-01 16:04 牧马人夏峥 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 将左子树接到右子树之前,递归解决 void flatten(TreeNode *root) { if (root == nullptr)return; flatten(root->left); flatten(root->right); //如果没有左子树,直接返回即可 if (root->left 阅读全文
posted @ 2016-06-01 15:13 牧马人夏峥 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 用递归的方式来做,左右两棵子树的高度差不超过1。分成两部分,一部分递归得到树的高度,一部分递归检查左右子树是否是平衡二叉树。 int getHeight(TreeNode *root) { if (root == nullptr)return 0; return max(getHeight(root 阅读全文
posted @ 2016-06-01 14:38 牧马人夏峥 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 用递归比较简单,这里用迭代的方式实现。注意什么时候返回true,什么时候返回false。 bool isSameTree(TreeNode *p, TreeNode *q) { stack<TreeNode *> s; s.push(p); s.push(q); while (!s.empty()) 阅读全文
posted @ 2016-06-01 14:12 牧马人夏峥 阅读(120) 评论(0) 推荐(0) 编辑