zoukankan      html  css  js  c++  java
  • 刷题94. Binary Tree Inorder Traversal

    一、题目说明

    题目94. Binary Tree Inorder Traversal,给一个二叉树,返回中序遍历序列。题目难度是Medium!

    二、我的解答

    用递归遍历,学过数据结构的应该都可以实现。

    class Solution{
    	public:
    		vector<int> inorderTraversal(TreeNode* root){
    			if(root != NULL){
    				if(root->left !=NULL)inorderTraversal(root->left);
    				res.push_back(root->val);
    				if(root->right !=NULL)inorderTraversal(root->right);
    			}
    			return res;
    		}
    	private:
    		vector<int> res;
    };
    
    Runtime: 4 ms, faster than 61.00% of C++ online submissions for Binary Tree Inorder Traversal.
    Memory Usage: 10.5 MB, less than 5.00% of C++ online submissions for Binary Tree Inorder Traversal.
    

    三、优化措施

    用非递归算法,需要一个栈,代码如下:

    class Solution{
    	public:
    		//iteratively
    		vector<int> inorderTraversal(TreeNode* root){
    			stack<TreeNode*> st;
    			TreeNode* p = root;
    			if(p != NULL){
    				while(p !=NULL) {
    					st.push(p);
    					p = p->left;
    				}
    		
    				while(!st.empty()){
    					p = st.top();
    					st.pop();
    					res.push_back(p->val);
    					
    					if(p->right !=NULL) {
    						p = p->right;
    						while(p !=NULL) {
    							st.push(p);
    							p = p->left;
    						}
    					}
    				}
    			}
    			return res;
    		}
    	private:
    		vector<int> res;
    };
    

    性能:

    Runtime: 4 ms, faster than 60.93% of C++ online submissions for Binary Tree Inorder Traversal.
    Memory Usage: 9.2 MB, less than 89.00% of C++ online submissions for Binary Tree Inorder Traversal.
    
    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    验证码
    SQL给字段加上统一的某个字符
    科讯CMS V9标签清单
    需要重新启动计算机.必须重新启动计算机才能安装 SQL Server
    父页面iframe自动适应子页面的宽高度
    div随另一个div自动增高
    让图片在DIV中垂直居中
    nginx default server
    zabbix proxy 分布式监控
    openjdk tomcat 安装
  • 原文地址:https://www.cnblogs.com/siweihz/p/12263297.html
Copyright © 2011-2022 走看看