详细图解二叉树中的顺序遍历(非递归)二叉树中的顺序递归语义LeetCode主题94源代码执行结果的详细图解
二叉树的中序递归意义
中顺遍历首先遍历左子树,然后访问根节点,最后遍历右子树。 如果二叉树为空,则结束并返回。 否则:
)1)左子树按中序遍历
)2)访问根节点
)3)按中序遍历右部分树
如图1所示二叉树那样,中顺扫描的结果: DBEAFC
LeetCode主题94提供二叉树的根节点root,并返回其中继遍历。
输入:根=[ 1,null,2,3 ]
输出: [ 1,3,2 ]
输入: root=[ 1,2 ]
输出: [ 2,1 ]
详细图解
将左链依次放入堆栈中,取出堆栈最上面的元素保存,放入该元素右边的孩子、右边的孩子的左链中。 重复操作直到堆栈为空。
源代码下面显示源代码。
/* * definitionforabinarytreenode.* struct treenode { * intval; * TreeNode *left; * TreeNode *right; *treenode(3360val )0)、left (nullptr )、right (nullptr ) * treenode (intx ) 3360val )、left (nullptr ) ) ) )。 TreeNode *left、treenode*right(:val ) x )、left )、right ) {}*; //# includestackclassolution (public : vectorintinordertraversal (treenode * root ) stacktreenode ) s; //节点设置存储TreeNode *temp=root的堆栈; 矢量int ans; wile(temp!=NULL ()//先堆栈左链s.push ) (temp ); temp=temp-left; } while (! s.empty () /检索堆栈中的元素temp=s.top ); s.pop (; ans.push_back(temp-val; //保存结果temp=temp-right; //进入右链条While(TEMP!=空(s.push ) ) temp; temp=temp-left; } }返回Ans; }; 执行结果
时间超过百分之百