【LeetCode题解】二叉树的遍历】的更多相关文章

需求: 以层遍历一棵二叉树,二叉树的结点结构如下 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的数组,以逐层结点方式记录该…
[题目] 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 { *…
解法一:非递归 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…
解法一:递归 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…
解法一:递归 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 + ; } } 解…
我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点--左孩子结点与右孩子结点.C实现的二叉树: struct TreeNode { int val; struct TreeNode *left; // left child struct TreeNode *right; // right child }; DFS DFS的思想非常朴素:根据…
目录 [LeetCode题解]94_二叉树的中序遍历 描述 方法一:递归 Java 代码 Python代码 方法二:非递归 Java 代码 Python 代码 [LeetCode题解]94_二叉树的中序遍历 @ 描述 给定一个二叉树,返回它的中序遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 方法一:递归 Java 代码 /** * Definition for a binary tree node…
目录 [LeetCode题解]144_二叉树的前序遍历 描述 方法一:递归 Java 代码 Python 代码 方法二:非递归(使用栈) Java 代码 Python 代码 [LeetCode题解]144_二叉树的前序遍历 描述 给定一个二叉树,返回它的前序遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 方法一:递归 Java 代码 /** * Definition for a binary tre…