解法一:递归 bool isSameTree(TreeNode* p, TreeNode* q) { if (p == NULL && q == NULL) return true; if ((p == NULL && q != NULL) || (p != NULL && q == NULL)) return false; if (p->val != q->val) return false; if (!isSameTree(p->lef…
解法一:非递归 vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if (root == NULL) return res; stack<TreeNode*> node_stack; TreeNode *p = root; while (p || !node_stack.empty()) { if (p) { res.push_back(p->val); node_stack.push…
解法一:递归 int maxDepth(TreeNode* root) { if (root == NULL) ; int max_left_Depth = maxDepth(root->left); int max_right_Depth = maxDepth(root->right); ; } 解法二:BFS int maxDepth(TreeNode* root) { if (root == NULL) ; queue<TreeNode*> node_queue; node_…
解法一:From top to bottom int treeHeight(TreeNode *T) { if (T == NULL) ; ; } bool isBalanced(TreeNode* root) { if (root == NULL) return true; int left_height = treeHeight(root->left); int right_height = treeHeight(root->right); ) return false; if (!isB…
解法一:递归 int minDepth(TreeNode* root) { if (root == NULL) ; if (root->left == NULL) { ; } else if (root->right == NULL) { ; } else { int left_minDepth = minDepth(root->left); int right_minDepth = minDepth(root->right); : right_minDepth + ; } } 解…
[题目] Given a binary tree, return the preordertraversal of its nodes' values. Example: Input: [1,null,2,3] 1 \ 2 / 3 Output: [1,2,3] [思路] 有参考,好机智,使用堆栈压入右子树,暂时存储. 左子树遍历完成后遍历右子树. [代码] /** * Definition for a binary tree node. * public class TreeNode { *…
解法一:递归 int countNodes(TreeNode* root) { if (root == NULL) ; TreeNode *pLeft = root->left; TreeNode *pRight = root->right; , rdepth = ; while (pLeft) { ldepth++; pLeft = pLeft->left; } while (pRight) { rdepth++; pRight = pRight->right; } if (ld…
需求: 以层遍历一棵二叉树,二叉树的结点结构如下 struct tree_node{ struct tree_node *lc; struct tree_node *rc; int data; }; 例如: //   1 //   / \ // 2   3 //     / //    4 //     \ //      5 层遍历后输出1,2,3,#,#,4,#,#,5,#代表该结点为空. 要求:空间复杂度为O(n),时间复杂度为O(n) 思路: 使用一个大小为n的数组,以逐层结点方式记录该…
[抄题]: 给定二叉树,返回其节点值的垂直遍历顺序. (即逐列从上到下).如果两个节点在同一行和同一列中,则顺序应 从左到右. 给定一个二叉树 {3,9,20,#,#,15,7} 3 /\ / \ 9 20 /\ / \ 15 7 返回垂直遍历顺序:[[9],[3,15],[20],[7]] 给定一个二叉树 {3,9,20,#,#,15,7} 3 /\ / \ 9 8 /\ /\ / \/ \ 4 01 7 返回垂直遍历顺序:[[4],[9],[3,0,1],[8],[7]] [暴力解法]: 时…
563. 二叉树的坡度 563. Binary Tree Tilt 题目描述 给定一个二叉树,计算整个树的坡度. 一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值.空结点的的坡度是 0. 整个树的坡度就是其所有节点的坡度之和. 每日一算法2019/6/10Day 38LeetCode563. Binary Tree Tilt 示例: 输入: 1 / \ 2 3 输出: 1 解释: 结点的坡度 2 : 0 结点的坡度 3 : 0 结点的坡度 1 : |2-3| = 1…