前序遍歷的遞迴演算法
思路:
訪問根節點
遍歷左子樹
遍歷右子樹
**如下:
//二叉樹的前序遍歷(遞迴)
void
binarytreeprevorder
(btnode* root)
}
前序遍歷的非遞迴演算法
思路:
借助棧來實現
傳入二叉樹根節點
列印當前節點(如果該節點有右孩子就將右孩子入棧)
如果該節點有左孩子則訪問,如果沒有,就訪問棧頂(返回步驟2,直至棧空)
**非遞迴:
**如下:
//二叉樹的前序遍歷(遞迴)
void
binarytreeprevordernonr
(btnode* root)
if(cur->lchild)
//如果有左孩子,訪問左孩子
else
//沒有左孩子就取棧頂
}stackdestory
(&st)
;}
棧函式實現如下:
typedef
char btdatatype;
// 二叉鏈的結構體
typedef
struct binarytreenode btnode;
typedef btnode* stdatatype;
// 棧的結構體
typedef
struct stack stack;
void
stackinit
(stack* psl, size_t capicity)
void
stackdestory
(stack* psl)
}void
checkcapacity
(stack* psl)
}void
stackpush
(stack* psl, stdatatype x)
void
stackpop
(stack* psl)
stdatatype stacktop
(stack* psl)
return psl->array[psl->size -1]
;}intstackisempty
(stack* psl)
前序遍歷二叉樹
題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...
二叉樹的前序遍歷
二叉樹的前序遍歷 public class tree 建立二叉樹,返回根結點 param return public static tree createtree int else else else else return root 前序遍歷 param tree public static vo...
二叉樹的前序遍歷
1.問題描述 給出一棵二叉樹,返回其節點值的前序遍歷。樣例給出一棵二叉樹,1 2 3返回 1,2,3 2.解題思路 運用遞迴的思想,按先根在左子樹最後右子樹的思想將節點存到vector中。3.實現 definition of treenode class treenode class solutio...