LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)

原创 2015年07月08日 09:57:06

题目:

Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1
    \
     2
    /
   3

return [1,3,2].

解题:

中序遍历一颗二叉树,如果是递归就很简单了,中序遍历左+访问根节点+中序遍历右 就可以了。迭代的话,我是通过一个栈,从根节点开始入栈,只要一直存在左节点就一直入栈,不存在左节点就出栈访问节点值,然后继续遍历出栈那个节点的右节点。

代码:

1,递归

	public static List<Integer> result=new ArrayList<>();
	  public static List<Integer> inorderTraversal(TreeNode root,List<Integer> result) {
		  if(root!=null)
		  {
			  inorderTraversal(root.left,result);
			  result.add(root.val);
			  inorderTraversal(root.right,result);
		  }
		  
		  return result;
		  
	        
	    }
	  
2,迭代(下面两个函数都是  只是不同的写法而已)

 public static List<Integer> inorderTraversal2(TreeNode root,List<Integer> result) {
		  List<Integer> res=new ArrayList<>();
		  Stack<TreeNode> nodeStack=new Stack<>();
		  
		 
		  while(root!=null||!nodeStack.isEmpty())
		  {
			  while(root!=null)
			  {
				  nodeStack.push(root);
				  root=root.left;
			  }
			  
			  TreeNode tempNode=nodeStack.pop();
			  res.add(tempNode.val);
			  root=tempNode.right;
			  
		  }
		  return res;
		  
		  
	        
	    }
	  
	  public static List<Integer> inorderTraversal3(TreeNode root,List<Integer> result) {
		  List<Integer> res=new ArrayList<>();
		  Stack<TreeNode> nodeStack=new Stack<>();
		  
		 
		 while(true)
		 {
			 while(root!=null)
			 {
				 nodeStack.add(root);
				 root=root.left;
			 }
			 
			 if(nodeStack.isEmpty()) break;
			 
			 TreeNode tempNode=nodeStack.pop();
			 res.add(tempNode.val);
			 root=tempNode.right;
		 }
		 
		 return res;
		  
		  
	        
	    }



Python-递归

​是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。 在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。
  • 2017年08月21日 14:22

LeetCode 94:Binary Tree Inorder Traversal(中序遍历)

Given a binary tree, return the inorder traversal of its nodes’ values. For example: Given binary ...
  • sunao2002002
  • sunao2002002
  • 2015-06-01 19:06:05
  • 1403

leetcode94 inorderTraversal中序遍历的三种实现

题目很简单二叉树的中序遍历,数据结构的教材上都会有这样的示例代码。其实中序遍历有三种解法: 递归解法(recursive solution) 栈迭代解法(iterative way(stack)) ...
  • hengyishu
  • hengyishu
  • 2015-08-02 10:12:50
  • 758

【LeetCode】94. Binary Tree Inorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016-05-22 23:59:26
  • 8561

LeetCode 94:Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binar...
  • geekmanong
  • geekmanong
  • 2015-12-26 17:40:18
  • 2097

LeetCode94 Binary Tree Inorder Traversal(迭代实现) Java

题目: Given a binary tree, return the inorder traversal of its nodes’ values. For example: Given bi...
  • l294265421
  • l294265421
  • 2016-04-22 21:05:06
  • 698

Given a binary tree, return the preorder traversal of its nodes' values.

vector tree::preorderTree(treeNode *root) {     vector result;     stack tempStack;     treeNode...
  • quickhead
  • quickhead
  • 2017-03-17 14:27:14
  • 391

leetcode-94:Binary Tree Inorder Traversal (Java)

Binary Tree Inorder Traversal  即二叉树的中序遍历。 常见的有两种方法:递归和循环,其中递归调用的栈空间为树的高度,一般为o(logn...
  • wen1158646729
  • wen1158646729
  • 2015-08-18 15:03:00
  • 813

LeetCode 94 Binary Tree Inorder Traversal(Python详解及实现)

【题目】 Given a binary tree, return the inordertraversal of its nodes' values.   For example: Given bin...
  • yangjingjing9
  • yangjingjing9
  • 2017-08-10 16:10:57
  • 425

Leetcode_94_Binary Tree Inorder Traversal

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42876657 Given a binary tre...
  • pistolove
  • pistolove
  • 2015-01-19 18:34:06
  • 1327
收藏助手
不良信息举报
您举报文章:LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)
举报原因:
原因补充:

(最多只允许输入30个字)