詳解二叉樹的前序遍歷

2021-10-03 03:30:52 字數 1427 閱讀 3685

前序遍歷的遞迴演算法

思路:

訪問根節點

遍歷左子樹

遍歷右子樹

**如下:

//二叉樹的前序遍歷(遞迴)

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...