二叉樹非遞迴遍歷

2021-08-19 22:21:39 字數 1425 閱讀 1344

二叉樹資料結構

public

class treenode

}

遞迴實現**

/** 遞迴實現前序遍歷 */

public

void

preorder(treenode root)

system.out.print(root.val);

preorder(root.left);

preorder(root.right);

}

非遞迴實現**(方法1)

/** 非遞迴實現前序遍歷 */

protected

static

void

preorder1(treenode p)

} }

非遞迴實現**(方法2)

/** 非遞迴實現前序遍歷 */

public

void

preorder2(treenode t)

if (!s.empty())

}

}

中序遍歷遞迴實現

// 中序遍歷遞迴     

public

static

void

inorder1(treenode t)

inorder(t.left);

system.out.print(t.val);

inorder(t.right);

}

中序遍歷的非遞迴實現

// 中序遍歷非遞迴     

public

static

void

inorder2(treenode t)

if (!s.empty())

}

}

後序遍歷遞迴實現

public

void

postorder(treenode root)

preorder(root.left);

preorder(root.right);

system.out.print(root.val);

}

後序遍歷非遞迴實現

/*非遞迴後序遍歷二叉樹*/

public

void preorder(treenode root)

if(node.right !=

null)

}while(!s2.isempty())

}

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...

二叉樹非遞迴遍歷

二叉樹非遞迴遍歷的幾個要點 1 不管前序 中序還是後序,它們的遍歷路線 或者說是回溯路線,先沿左邊一直走到盡頭,然後回溯到某節點,並跳轉到該節點的右孩子 如果有的話 然後又沿著這個有孩子的左邊一直走到盡頭 都是一樣的。2 明確每次回溯的目的。比如,前序回溯的目的是為了訪問右子樹 中序回溯的目的是為了...

非遞迴遍歷二叉樹

中序遞迴遍歷 void inordertrvdigui node pnode 然而,當樹的深度很大 比如16 時 假設為滿二叉樹 樹的節點數為 2 0 2 1 2 2 2 15 2 16 65536,遍歷整個二叉樹意味著有65536次函式呼叫,這將極大地增加程式執行時間。這時,應該採取非遞迴便利二叉...