10.26(94. 二叉树的中序遍历-----102. 二叉树的层次遍历)

94. 二叉树的中序遍历(通过)

思路:二叉树的遍历

效率:100%

程序代码:

class Solution {
public:
	vector<int> inorderTraversal(TreeNode* root) {
		vector<int> result;
		Haha(root, result);
		return result;
	}
	void Haha(TreeNode* root, vector<int> &result) {
		if (root == NULL) return;
		Haha(root->left, result);
		result.push_back(root->val);
		Haha(root->right,result);
	}
};

方法二:(效率比较低)

可是居然也是100%。。。。。

class Solution {
public:
	vector<int> inorderTraversal(TreeNode* root) {
		vector<int> result;
		if (root == NULL) return result;
		vector<int> a = inorderTraversal(root->left);
		for (int i = 0; i < a.size(); i++)
			result.push_back(a[i]);
		result.push_back(root->val);
		vector<int> b = inorderTraversal(root->right);
		for (int j = 0; j < b.size(); j++)
			result.push_back(b[j]);
		return result;
	}
	
};

102. 二叉树的层次遍历(通过)

思路:略

效率:99.93%

程序代码:

class Solution {
public:
	vector<vector<int>> levelOrder(TreeNode* root) {
		vector<vector<int>> result;
		vector<int> tmp;//
		if (!root) return result;
		queue<TreeNode*> qu;//新建一个队列,存放的是指针
		qu.push(root);
		while (!qu.empty()) {
			int n = qu.size();
			for (int i = 0; i < n; i++) {
				TreeNode* aim = qu.front();
				tmp.push_back(aim->val);
				qu.pop();
				if(aim->left)
					qu.push(aim->left);
				if(aim->right)
					qu.push(aim->right);
			}
			result.push_back(tmp);
			tmp.clear();//再进行清空
		}
		return result;
	}
};

猜你喜欢

转载自blog.csdn.net/the_little_fairy___/article/details/84394051